如何使用绑定变量执行 SQL 脚本
How do I execute a SQL script using a bind variable
我 运行 在 Windows 10 平台上使用 Oracle 18.c。
我有一个大型 DOS 脚本,它调用 SQL Plus 到 运行 第一个 SQL 脚本,并向它传递一个参数。
参数成功传递给第一个SQL脚本。在那个 SQL 脚本中,我试图将一些文本附加到传递的参数,以便它可以使用“@”功能调用第二个脚本。
DOS 脚本 test1.bat
@echo off
SET value1=2020_01_19_17_00_01
sqlplus my_username/my_password@my_TNS as sysdba @C:\Backups\test1.sql %value1%
SQL 脚本 test1.sql
SET SERVEROUTPUT ON
variable param1 varchar2(512);
variable full_file_name varchar2(512);
BEGIN
:param1 := '&&1';
dbms_output.put_line('The value of the passed parameter is: ' || :param1);
:full_file_name := :param1 || '_f104.sql';
dbms_output.put_line('The new filename would be: ' || :full_file_name);
@:full_file_name;
END;
/
我在获取 :full_file_name 中的值以从 test1.sql 脚本执行时遇到问题。如果不涉及变量,我会简单地使用行 @2020_01_19_17_00_01_f104.sql
如何让名称存储在 :full_file_name 中的脚本文件执行?
我找到了一种方法来做到这一点。我的 sql 脚本现在看起来像:
Define ffn104 = '&&1._f104.sql'
@&ffn104
exit
请注意,在 Define 语句中,我必须在传递的变量 &&1 之后放置一个句点以结束其定义。然后我附加了_f104.sql。
那解决了问题。
我 运行 在 Windows 10 平台上使用 Oracle 18.c。 我有一个大型 DOS 脚本,它调用 SQL Plus 到 运行 第一个 SQL 脚本,并向它传递一个参数。 参数成功传递给第一个SQL脚本。在那个 SQL 脚本中,我试图将一些文本附加到传递的参数,以便它可以使用“@”功能调用第二个脚本。 DOS 脚本 test1.bat
@echo off
SET value1=2020_01_19_17_00_01
sqlplus my_username/my_password@my_TNS as sysdba @C:\Backups\test1.sql %value1%
SQL 脚本 test1.sql
SET SERVEROUTPUT ON
variable param1 varchar2(512);
variable full_file_name varchar2(512);
BEGIN
:param1 := '&&1';
dbms_output.put_line('The value of the passed parameter is: ' || :param1);
:full_file_name := :param1 || '_f104.sql';
dbms_output.put_line('The new filename would be: ' || :full_file_name);
@:full_file_name;
END;
/
我在获取 :full_file_name 中的值以从 test1.sql 脚本执行时遇到问题。如果不涉及变量,我会简单地使用行 @2020_01_19_17_00_01_f104.sql 如何让名称存储在 :full_file_name 中的脚本文件执行?
我找到了一种方法来做到这一点。我的 sql 脚本现在看起来像:
Define ffn104 = '&&1._f104.sql'
@&ffn104
exit
请注意,在 Define 语句中,我必须在传递的变量 &&1 之后放置一个句点以结束其定义。然后我附加了_f104.sql。 那解决了问题。