将参数从另一个SQL文件中传递到SQL文件
我想肯定会有这么一个问题,但我一直没能找到 我有两个SQL文件,将参数从另一个SQL文件中传递到SQL文件,sql,oracle,arguments,sqlplus,Sql,Oracle,Arguments,Sqlplus,我想肯定会有这么一个问题,但我一直没能找到 我有两个SQL文件,myFile1.SQL和myFile2.SQLmyFile1.sql调用myFile2.sql如下: -- In myFile1.sql: @scripts/myFile2 这可以正常工作,但现在我想向该文件传递一个参数。我已尝试执行以下操作,但未成功(导致文件未找到异常): 有人知道这样做的语法吗?我猜您的问题是脚本/myFile2.sql是它所在脚本的相对路径。如果是这样的话,那么它将遵循启动SQL*Plus的目录(当前工作目
myFile1.SQL
和myFile2.SQL
myFile1.sql
调用myFile2.sql
如下:
-- In myFile1.sql:
@scripts/myFile2
这可以正常工作,但现在我想向该文件传递一个参数。我已尝试执行以下操作,但未成功(导致文件未找到异常):
有人知道这样做的语法吗?我猜您的问题是
脚本/myFile2.sql
是它所在脚本的相对路径。如果是这样的话,那么它将遵循启动SQL*Plus的目录(当前工作目录)的路径。如果这是问题所在,那么问题不在于参数,而在于SQL*Plus找不到该文件。在这种情况下,您应该使用@
,它调用与其所在文件相关的路径
该参数应该按照您建议的那样工作()。调用文件时提供的参数放在替换变量(而不是绑定变量)中,可以使用后跟参数号的符号进行引用。在您的示例中,
'ImAnArgument'
将是&1
经过多次尝试后,我无法传入参数(我仍然不明白为什么不能)。但以下是我为获得同样的效果所做的:
-- In myFile1.sql:
DEFINE my_arg = 'ImAnArgument';
@scripts/myFile2
然后
你试过没有参数的吗?如果是,它是否按预期运行?它运行时没有问题。我一直在将一个参数设置为
&1
或不设置,以查看发生了什么。
-- 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;