从另一个SQL文件中将参数传递给SQL文件

时间:2014-06-03 20:16:06

标签: sql oracle arguments sqlplus

我当然认为会有一个问题,但我找不到。

我有2个SQL文件,myFile1.sqlmyFile2.sqlmyFile1.sql就像这样调用myFile2.sql

-- In myFile1.sql:
@scripts/myFile2

这没有问题,但现在我想将一个参数传递给该文件。我尝试过以下操作,但没有成功(导致找不到文件):

@scripts/myFile2 'ImAnArgument'

有谁知道这样做的语法是什么?

2 个答案:

答案 0 :(得分:1)

我猜你的问题是scripts/myFile2.sql是它所在脚本的相对路径。如果是这样,那么它就是从SQL * Plus启动的目录开始的那条路径(当前的工作目录)。如果这是问题,那么它不是问题的参数,而是SQL * Plus无法找到该文件。在这种情况下,您应该使用@@,它会调用相对于它所在文件的路径。


参数应该与您提议的一样(documentation)。调用文件时提供的参数放在替换变量(而不是绑定变量)中,可以使用&符号后跟参数号来引用。在您的示例中,'ImAnArgument'将为&1

答案 1 :(得分:0)

经过多次尝试,我无法传递参数(我仍然不明白为什么不这样做)。但这是我为达到同样的效果所做的:

-- In myFile1.sql:
DEFINE my_arg = 'ImAnArgument';
@scripts/myFile2

然后

-- In myFile2.sql 
-- Do stuff using the variable my_arg, such as
SELECT my_arg FROM my_table;