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

Did*_*jit 6 sql oracle relative-path sql-scripts oracle-sqldeveloper

首先,这个问题涉及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
Run Code Online (Sandbox Code Playgroud)

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

@@/A/runAll.sql
@@/B/runAll.sql
Run Code Online (Sandbox Code Playgroud)

脚本/ A/runAll.sql:

@@/A1.sql
@@/A2.sql
Run Code Online (Sandbox Code Playgroud)

在那里"@@",我推测,是指在SQL*Plus相对路径.

我愚弄了制作变量,但没有太多运气.我已经能够'&1'在根目录中使用和传递类似的东西.即:scripts/runEverything.sql:

@'&1/A/runAll.sql' '&1/A'
@'&1/B/runAll.sql' '&1/B'
Run Code Online (Sandbox Code Playgroud)

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

@'c:/.../scripts/runEverything.sql' 'c:/.../scripts'
Run Code Online (Sandbox Code Playgroud)

但这里的问题是B/runAll.sql用路径调用:c:/.../scripts/A/B.

那么,SQL Developer是否可以进行嵌套调用,以及如何进行?

Pat*_*con 12

这种方法有两个组成部分:

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

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

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

    工具>首选项

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

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

    "$ {} file.dir"

  2. 创建一个脚本文件并将所有脚本放在其中:

    runAll.sql

    A1.sql

    A2.sql

    runAll.sql的内容包括:

    @ A1.sql;

    @ A2.sql;

要测试此方法,请在SQL Developer中单击File并导航并打开script\runAll.sql文件.

接下来,选择all(在工作表上),然后执行.

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