我正在尝试在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的初学者,所以我还在学习,但我无法弄清楚这个错误来自哪里。任何帮助将不胜感激。谢谢。
答案 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