Oracle 从另一个返回ref游标的Proc-pl/sql过程调用Proc?
如何修改以下语法,以便可以查找并动态执行这两个过程: ic_rep_test1和ic_rep_test2,存储在名为OPSGENERAL.ic_EXTRACTS的表中 我认为这是因为需要在传递ref游标的情况下调用proc 作为一个参数?不知道如何让它动态工作 “立即执行”语句有效吗? 谢谢Oracle 从另一个返回ref游标的Proc-pl/sql过程调用Proc?,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,如何修改以下语法,以便可以查找并动态执行这两个过程: ic_rep_test1和ic_rep_test2,存储在名为OPSGENERAL.ic_EXTRACTS的表中 我认为这是因为需要在传递ref游标的情况下调用proc 作为一个参数?不知道如何让它动态工作 “立即执行”语句有效吗? 谢谢 一些附加信息:两个存储过程ic_rep_test1和ic_rep_test2存储在一个名为OPSGENERAL.ic_EXTRACTS的表中,其中包含两个变量“extract_id”和“Proc name”
一些附加信息:两个存储过程ic_rep_test1和ic_rep_test2存储在一个名为OPSGENERAL.ic_EXTRACTS的表中,其中包含两个变量“extract_id”和“Proc name”。谢谢创建或替换过程OPSGENERAL.ic_rep_extract_retrieval_dl e_id IN INTEGER,exout OUT SYS_REFCURSOR为use_proc_name VARCHAR2 200;开始从OPSGENERAL.IC\u EXTRACTS中选择PROC INTO use\u PROC\u name,其中extract\u id=e\u id;执行立即“声明外部系统\u refcursor;开始“| |使用|过程|名称| |”exout;"完";;结束ic_rep_extract_retrieval_dl/在上面的“修订版”SP代码中,语法编译没有错误,但是当用户输入时,它不会生成proc id 1的结果,它只返回“已执行的过程”。对不起,我不确定我是否理解上面“修订版”SP代码中“a_horse_with_no_name”的注释是什么意思,语法编译时没有错误,但是当用户输入时,它不会生成proc id 1的结果,它只返回“procedure executed”,没有输出结果。谢谢
create or replace PROCEDURE ic_rep_extract_retrieval (
e_id IN integer,
exout OUT sys_refcursor
) IS
BEGIN
IF e_id = '1' THEN
ic_rep_test1 (exout);
ELSIF e_id = '2' THEN
ic_rep_test2 (exout);
END IF;
END ic_rep_extract_retrieval;
/****************************** Revised **************/
CREATE OR REPLACE PROCEDURE OPSGENERAL.ic_rep_extract_retrieval_dl (
e_id IN INTEGER
,exout OUT SYS_REFCURSOR)
IS
use_proc_name VARCHAR2 (200);
BEGIN
SELECT PROC
INTO use_proc_name
FROM OPSGENERAL.IC_EXTRACTS
WHERE extract_id = e_id;
EXECUTE IMMEDIATE
'declare exout sys_refcursor; begin ' || use_proc_name || '(exout); end;';
END ic_rep_extract_retrieval_dl;
/