我当然认为会有一个问题,但我找不到。
我有2个SQL文件,myFile1.sql
和myFile2.sql
。 myFile1.sql
就像这样调用myFile2.sql
:
-- In myFile1.sql:
@scripts/myFile2
这没有问题,但现在我想将一个参数传递给该文件。我尝试过以下操作,但没有成功(导致找不到文件):
@scripts/myFile2 'ImAnArgument'
有谁知道这样做的语法是什么?
答案 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;