在PL \ SQL脚本中使用绑定变量的问题

时间:2016-01-27 19:03:52

标签: plsql

我正在尝试在oracle过程中使用绑定变量,我遇到了错误。以下是我正在使用的代码:

DECLARE
sql_stmt        varchar2(4000);
parm1           varchar2(100);
parm2           varchar2(100);
parm3           varchar2(100);
parm4           varchar2(100);

BEGIN
parm1   := 'test1';
parm2   := 'test2';
parm3   := 'test3';
parm4   := 'test4';

sql_stmt :=  ‘EXEC PROCESS_ARCHIVE.START_PROCESSARCHIVE(CHR(39)||:1||CHR(39),null, CHR(39)||:2||CHR(39), CHR(39)||:3||CHR(39), CHR(39)||:4||CHR(39))’;
EXECUTE IMMEDIATE sql_stmt using parm1,parm2,parm3,parm4;

END;
/

当执行此操作时,我收到错误:“SP-0552:绑定变量”4“未声明”。我是PL \ SQL的初学者,所以我还在学习,但我无法弄清楚这个错误来自哪里。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

这对我有用......

create or replace procedure testProc(a varchar2,
                                     b varchar2 default null,
                                     c varchar2,
                                     d varchar2,
                                     e varchar2) as
begin
    dbms_output.put_line('a: '||a);
    dbms_output.put_line('b: '||b);
    dbms_output.put_line('c: '||c);
    dbms_output.put_line('d: '||d);
    dbms_output.put_line('e: '||e);
end;
/

declare
    sql_stmt varchar2(4000);
    parm1 varchar2(100);
    parm2 varchar2(100);
    parm3 varchar2(100);
    parm4 varchar2(100);
begin
    parm1 := 'test1';
    parm2 := 'test2';
    parm3 := 'test3';
    parm4 := 'test4';

    sql_stmt :=  'begin testProc(:1, null, :2, :3, :4); end;';
    EXECUTE IMMEDIATE sql_stmt using IN parm1, IN parm2, IN parm3, IN parm4;
end;
/

结果......

a: test1
b:
c: test2
d: test3
e: test4