oracle 外部文件 变量,oracle – 我想将一个变量参数传递给外部SQL文件(带有SQL * Plus的PL / SQL)...

我已经搜索了这个论坛,并通过谷歌搜索我的问题的答案,但我无法找到我的挑战的具体答案.这就是为什么我在这里要求它希望得到你们其中一个人的回答.

我想使用多个sql文件,而一个sql文件是执行带参数的其他sql文件的控制文件.

该文件名为:startup.sql

我有一个包含所有值的表(不介意列的名称,我为我的帖子更改了它们).

create table control (

S varchar2(15) not null,N varchar2(25 char) not null,B varchar2(25 char) not null,Acheck varchar2(25 char) not null,Adcheck varchar2(25) not null,Blu varchar2(25) not null,ADB varchar2(25)

)

插入以下其中一个(有更多条目,但一个足以向您显示工作方式):

insert into control (S,N,B,Acheck,Adcheck,Blu,ADB)

values('Test','B','J','N','');

我的控制文件如下:

set escape on

set serveroutput on

SET DEFINE ON

declare

cursor c_lees_control is

select S,ADB

from control

v_s varchar2(30);

v_b varchar2(30);

v_blu varchar2(30);

begin

for r_lees_control in c_lees_control

loop

v_s := r_lees_control.S;

v_b := r_lees_control.B;

v_blu := r_lees_control.Blu;

if v_b = 'J' then

--Also tried this.

--@C:/Temp/uitvoer.sql $v_s $v_blu

@C:/Temp/uitvoer.sql %v_s% %v_blu%

end if;

end loop;

end;

/

在我的uitvoer.sql中,我有一个这样的变量:

variable_s := '&&1';

variable_blu := '&&2';

现在发生了以下情况.

我启动sqlPlus(使用我的所有凭据)并启动我的控制文件(control.sql).

在sqlPlus的输出中,声明如下:

old 89: s = '&&1';

new 89: s = '%v_s%';

old 128: b_lu := '&&2';

new 128: b_lu := '%v_blu%';

我期待以下内容:

old 89: s = '&&1';

new 89: s = 'Test';

old 128: b_lu := '&&2';

new 128: b_lu := 'J';

为什么控制文件中的变量未正确解析为新的sql文件?

我希望有一个人可以帮助我.如果有些事情不清楚,我可以尝试解释一下.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值