当前位置: 代码迷 >> Oracle开发 >> Oracle动态执行存储过程,出错!
  详细解决方案

Oracle动态执行存储过程,出错!

热度:65   发布时间:2016-04-24 06:41:36.0
Oracle动态执行存储过程,报错!!
本帖最后由 BJ20120308 于 2014-04-18 14:37:49 编辑

--执行存储过程
PROCEDURE EXEC_PROC(PROC_NAME VARCHAR2, RESPONSE_XML OUT VARCHAR2) IS
  v_EXEC_RESULT CUR_RESULT; --CUR_RESULT 我自定义的类型
v_SQL         VARCHAR2(100);
BEGIN

v_SQL := PROC_NAME||'(:1);'; --'P_DTS_PURCHASE_BASE(:v_EXEC_RESULT)';
   
EXECUTE IMMEDIATE v_SQL   
                                    USING OUT v_EXEC_RESULT;    --这个地方报错,

FOR i IN v_EXEC_RESULT.FIRST .. v_EXEC_RESULT.LAST LOOP
RESPONSE_XML := v_EXEC_RESULT(i).TABLE_NAME;
END LOOP;

END EXEC_PROC;


错误信息:

错误:PLS-00457: expressions have to be of SQL types
行:296
文本:EXECUTE IMMEDIATE v_SQL USING OUT v_EXEC_RESULT;

错误:PL/SQL: Statement ignored
行:296
文本:EXECUTE IMMEDIATE v_SQL USING OUT v_EXEC_RESULT;

------解决方案--------------------
错误类型:

说明你的动态sql有问题。
 v_SQL := PROC_NAME
------解决方案--------------------
'(:1);'; 

改成下面的试一试:
 v_SQL :=‘begin’
------解决方案--------------------
PROC_NAME
------解决方案--------------------
'(:1);end;'; 
  相关解决方案