--执行存储过程
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;';