我有以下情况:
declare
dinamicsql varchar2(500);
whereclause varchar2(500);
returnval numeric;
dinamicAuxVal numeric;
begin
dinamicAuxVal := 2;
dinamicsql := 'select dummy from dual ' || whereclause;
execute immediate dinamicsql
into returnval
using dinamicAuxVal;
dbms_output.put_line(returnval);
end;
' where clause'变量是一个动态的where子句,可能不使用dinamicAuxVal变量。当变量未用于' whereclause'我得到例外'绑定变量错误 - ORA-01006'。
我理解为什么会发生这种情况,但有什么办法吗?
答案 0 :(得分:0)
whereclause未初始化!试试:
whereclause := <whatever you want>;
dinamicsql := 'select dummy from dual ' || whereclause;
另请参阅:https://www.techonthenet.com/oracle/errors/ora01006.php
使用if then
子句以dinamically方式初始化变量。例如:
whereclause := '';
IF <you need a where clause> THEN
whereclause := 'where xyz ... ';
END IF;