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

问题描述 投票:0回答:1

我正在Windows 10平台上运行Oracle18.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;
/

我在从test1.sql脚本中获取:full_file_name中的值时遇到问题。如果不涉及变量,则只需使用@ 2020_01_19_17_00_01_f104.sql行如何执行名称存储在:full_file_name中的脚本文件来执行?

sql-scripts bind-variables
1个回答
0
投票

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

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

[请注意,在Define语句中,我必须在传递的变量&& 1之后放置一个句点以结束其定义。然后我添加了_ f104.sql。那解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.