Oracle 如何在过程中返回数据集?

Oracle 如何在过程中返回数据集?,oracle,stored-procedures,plsql,oracle11gr2,sys-refcursor,Oracle,Stored Procedures,Plsql,Oracle11gr2,Sys Refcursor,我有这样一个程序: CREATE OR REPLACE PROCEDURE RIC.TEST (P_VAR1 IN VARCHAR2, P_VAR2 IN VARCHAR2, P_VAR3 IN VARCHAR2, P_VAR4 IN VARCHAR2) IS L_RC SYS_REFCURSOR; BEGIN INSERT INTO RIC.TEMP_TABLE SELECT * FROM RIC.TABLE WHERE COL1=P_VAR1 AND COL2=P_VAR2 AN

我有这样一个程序:

CREATE OR REPLACE PROCEDURE RIC.TEST 
(P_VAR1 IN VARCHAR2, P_VAR2 IN VARCHAR2, P_VAR3 IN VARCHAR2, P_VAR4 IN VARCHAR2)
IS 
L_RC SYS_REFCURSOR;
BEGIN
INSERT INTO RIC.TEMP_TABLE
    SELECT * FROM RIC.TABLE WHERE COL1=P_VAR1 AND COL2=P_VAR2 AND COL3=P_VAR3 AND COL4=P_VAR4 AND ...;

OPEN L_RC
FOR 'SELECT .... FROM RIC.TEMP_TABLE WHERE ...';
...
临时表是一个临时表。我需要返回并显示第二个选择输出选择。。。。从RIC.TEMP_表,其中。。。当我运行这个过程时。我该怎么做?光标的方向不对吗


谢谢。

修改程序以

CREATE OR REPLACE PROCEDURE ric.test (p_var1     IN     VARCHAR2,
                                      p_var2     IN     VARCHAR2,
                                      p_var3     IN     VARCHAR2,
                                      p_var4     IN     VARCHAR2,
                                      p_cursor      OUT SYS_REFCURSOR)
IS
BEGIN
   INSERT INTO ric.temp_table
      SELECT *
        FROM ric.table
       WHERE col1 = p_var1 AND col2 = p_var2 AND col3 = p_var3;

   OPEN p_cursor FOR SELECT * FROM ric.temp_table;
END;
/
并按照以下步骤执行该过程:

VARIABLE cur REFCURSOR;
EXEC test (:cur);
PRINT cur;
如果希望使用SQL执行该过程,请将该过程包装在函数中,然后在SQL语句中调用该函数。

您使用的是哪个Oracle版本?11.2.0.4.0-2节点rac。