我正在尝试使用动态SQL来执行存储过程并检索输出参数:
v_sql := 'BEGIN ' || p_procname || '(''' || p_input1 || ''', ''' || p_input2 || ''', v_output1); END;';
DBMS_OUTPUT.PUT_LINE(v_sql);
EXECUTE IMMEDIATE v_sql;
我声明了v_output1
变量,但是我收到了以下错误信息:
PLS-00201: identifier 'V_ISSUE' must be declared
如果我用v_sql
中的 dbms_output
代码替换上述代码,该过程可以正常工作,所以该过程不是问题所在,问题在于我尝试动态调用它的方式。
我不知道我尝试的做法是否可行。有没有一种通过动态SQL检索此过程调用的输出参数的方法?
p_procname
也是一个变量,但你不能将其绑定,所以你必须像Paul在他的回答中所做的那样进行连接。 - Alex Poole