sys_refcursor的替代

时间:2016-02-19 11:08:39

标签: sql oracle mule oracle12c tibco

sys_refcursor的替代是什么。

升级12c后,sys_refcursor无法识别mulesoft/tibco的结果集。将其读作null

2 个答案:

答案 0 :(得分:1)

使用

TYPE cursor_type IS REF CURSOR;

或强类型游标:

CREATE PACKAGE SCHEMA_NAME.PACKAGE_NAME
AS
  TYPE Table_Name_Cursor IS REF CURSOR RETURN SCHEMA_NAME.TABLE_NAME%ROWTYPE;

  -- You said this does not work.
  -- PROCEDURE get_Weakly_Typed_Cursor (
  --   out_cursor OUT SYS_REFCURSOR
  -- );

  PROCEDURE get_Strongly_Typed_Cursor (
    out_cursor OUT Table_Name_Cursor
  );
END;
/

CREATE PACKAGE BODY SCHEMA_NAME.PACKAGE_NAME
AS
  PROCEDURE get_Strongly_Typed_Cursor (
    out_cursor OUT Table_Name_Cursor
  )
  AS
  BEGIN
    OPEN out_cursor FOR
    SELECT * FROM SCHEMA_NAME.TABLE_NAME;
  END;
END;
/

答案 1 :(得分:0)

您可以定义自己的引用游标类型:

TYPE my_ref_cursor_type is REF CURSOR;
v_cursor my_ref_cursor_type;

但如果使用没有SYS_REFCURSOR的非常旧版本的Oracle,那么这样做才有意义。