如何使用绑定变量执行 SQL 脚本

Posted

技术标签:

【中文标题】如何使用绑定变量执行 SQL 脚本【英文标题】:How do I execute a SQL script using a bind variable 【发布时间】:2020-01-21 13:29:55 【问题描述】:

我在 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 中的脚本文件以执行?

【问题讨论】:

【参考方案1】:

我找到了一种方法来做到这一点。我的 sql 脚本现在看起来像:

Define ffn104 = '&&1._f104.sql'
@&ffn104
exit

请注意,在定义语句中,我必须在传递的变量 &&1 之后放置一个句点来结束其定义。然后我附加了 _f104.sql。 这解决了问题。

【讨论】:

以上是关于如何使用绑定变量执行 SQL 脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在pl/sql中执行绑定变量?

DB2的SQL脚本如何定义变量,并赋值使用?执行成功有重赏哦,谢谢

如何将 R 会话中的值替换为 SQL 绑定变量占位符?

关于如何在 Oracle 数据库中使用 VBA 执行 SQL 脚本的建议

使用COE脚本绑定SQL Profile

如何将多个sql脚本执行到具有相同版本的flyway中