小编典典

在Oracle SQL Developer中按相对路径执行脚本

sql

首先,这个问题与 Oracle SQL Developer 3.2有关 ,与SQL * Plus或iSQL等无关。我做了很多搜索,但没有找到直接的答案。

我有几个试图自动化的脚本集合(顺便说一句,我的SQL经验很基础,而且大多基于MS)。我遇到的麻烦是通过相对路径执行它们。例如,假设此设置:

scripts/A/runAll.sql
       | /A1.sql
       | /A2.sql
       |
       /B/runAll.sql
         /B1.sql
         /B2.sql

我想要一个scripts/runEverything.sql类似这样的文件:

@@/A/runAll.sql
@@/B/runAll.sql

脚本/A/runAll.sql:

@@/A1.sql
@@/A2.sql

"@@"我收集的where表示SQL * Plus中的相对路径。

我自欺欺人地制造变量,但运气不佳。我已经能够使用'&1'和传递根目录来做类似的事情。即:scripts / runEverything.sql:

@'&1/A/runAll.sql' '&1/A'
@'&1/B/runAll.sql' '&1/B'

并通过执行以下命令调用它:

@'c:/.../scripts/runEverything.sql' 'c:/.../scripts'

但是这里的问题是B/runAll.sql使用path调用了c:/.../scripts/A/B

那么, 使用SQL Developer 可以进行嵌套调用吗?如何进行?


阅读 400

收藏
2021-03-23

共1个答案

小编典典

此方法包含两个组件:

-将活动的SQL Developer工作表的文件夹设置为默认目录。

-打开驱动程序脚本,例如runAll.sql(然后将默认目录更改为活动目录),并使用runAll.sql脚本中的相对路径来调用同级脚本。

  1. 设置脚本默认文件夹。在“ SQL Developer”工具栏上,使用以下导航:

工具>首选项

在首选项对话框中,导航到“数据库”>“工作表”>“选择默认路径以查找脚本”。

输入默认路径以将脚本查找为活动工作目录:

“ $ {file.dir}”

  1. 创建一个脚本文件,并将所有关联的脚本放入其中:

runAll.sql

A1.sql

A2.sql

runAll.sql的内容将包括:

@ A1.sql;

@ A2.sql;

若要测试此方法,请在SQL Developer中单击“文件”,然后浏览并打开script \ runAll.sql文件。

接下来,选择所有(在工作表上),然后执行。

通过导航和打开runAll.sql工作表的操作,默认文件夹变为“脚本”。

2021-03-23