Stored procedures Oracle调用在另一个过程中返回游标的过程

Stored procedures Oracle调用在另一个过程中返回游标的过程,stored-procedures,oracle11g,cursor,sys-refcursor,Stored Procedures,Oracle11g,Cursor,Sys Refcursor,我有2个程序包和一个返回sysref游标的过程。现在,我想调用另一个包和过程中的两个包和过程中的任何一个,该包和过程将在输入列上决定需要调用哪个包和过程 然而,相应地,内部进程的输出必须与外部进程的输出相同。你能告诉我怎么做吗 CREATE OR REPLACE PACKAGE DEDUPE_PACKAGE_abc IS TYPE refCursor IS REF CURSOR; PROCEDURE ADD_CAF_abc( IN_CUSTOMER_TYPE IN VA

我有2个程序包和一个返回sysref游标的过程。现在,我想调用另一个包和过程中的两个包和过程中的任何一个,该包和过程将在输入列上决定需要调用哪个包和过程

然而,相应地,内部进程的输出必须与外部进程的输出相同。你能告诉我怎么做吗

CREATE OR REPLACE PACKAGE DEDUPE_PACKAGE_abc IS
  TYPE refCursor IS REF CURSOR;
  PROCEDURE ADD_CAF_abc(
 IN_CUSTOMER_TYPE         IN VARCHAR2 ,
 retCursor_abc  IN OUT refCursor );

CREATE OR REPLACE PACKAGE DEDUPE_PACKAGE_pqr IS
  TYPE refCursor IS REF CURSOR;
  PROCEDURE ADD_CAF_prq(
 IN_CUSTOMER_TYPE         IN VARCHAR2 ,
 retCursor_pqr  IN OUT refCursor );


CREATE OR REPLACE PACKAGE DEDUPE_PACKAGE_main IS
  TYPE refCursor IS REF CURSOR;
  PROCEDURE ADD_CAF_main(
 IN_CUSTOMER_TYPE         IN VARCHAR2 ,
 retCursor_main  IN OUT refCursor );

BEGIN

if IN_CUSTOMER_TYPE == something then
   exec  dedupe_package_abc.ADD_CAF_abc ; 
   -- i need the output of the cursor here
    return ; 
else  IN_CUSTOMER_TYPE == something2 then
   exec  dedupe_package_pqr.ADD_CAF_pqr ; 
   -- i need the output of the cursor here
    return ; 

return -- i need to return the data from the retcursor_abc or the retcursor_pqr into the retrursor_main ...

是否有理由要定义三种不同的类型(均命名为refCursor),而不仅仅是将参数定义为sys\u refCursor?是否有理由将游标定义为IN-OUT而不是OUT?您真的希望将游标传递给这些过程吗?游标的类型是sysrefcursor。名字可以是任何东西。所有的光标都只有一个。只是在大多数文档中给出了游标的定义,我遵循了这一点。在您发布的代码片段中,您声明了三种不同类型的重复数据消除包\u abc.refCursor、重复数据消除包\u pqr.refCursor和重复数据消除包\u main.refCursor,而不是使用sys\u refCursor。你是说在实际的代码中,这些参数是sys_refcursor类型,而不是三种用户定义类型中的一种?嗨,我编辑了代码以显示我需要做什么,并更改了retcusror的名称。我在这里得到了答案。。谢谢曼尼什语