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

新手上路,请多包涵

首先,这个问题与 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

其中 "@@" ,我认为,是指 SQL*Plus 中的相对路径。

我一直在制作变量,但运气不佳。我已经能够使用 '&1' 并传入根目录来做类似的事情。即:脚本/runEverything.sql:

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

并通过执行此调用它:

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

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

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

原文由 Didjit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

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

- 将活动 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 工作表的行为,默认文件夹变为“脚本”。

原文由 Patrick Bacon 发布,翻译遵循 CC BY-SA 4.0 许可协议

如何在文件中传递参数

@A1.sql; (范围)

@A2.sql; (范围)

原文由 Priyanka 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏