Oracle SQL Developer:如何查看ref游标的结果?

Mar*_*son 9 oracle oracle-sqldeveloper

如果我有一个函数返回查询的引用游标,我如何在SQL Developer中查看它的结果集?Toad有一个特殊的标签用于查看参考光标的结果,这是我想要找到的功能.

Rob*_*ebe 6

双击结果记录中的光标字段.在右侧有一个"..."图标.单击此按钮,您将看到内容


qui*_*ker 6

SET SERVEROUTPUT ON;
VARIABLE X REFCURSOR;
EXEC PROCEDURE_WITH_OUTPUT_SYS_REFCURSOR(:X);
PRINT X;
Run Code Online (Sandbox Code Playgroud)


Cia*_*uen 5

嗨,我知道这是前一段时间被问到的,但我只是想出来了,这可能对其他人有所帮助.不确定这是否正是您正在寻找的,但这就是我调用存储过程并在SQL Developer中查看输出的方法.
在SQL Developer中查看proc时,右键单击并选择"Run"或选择Ctrl + F11以显示"运行PL/SQL"窗口.这将创建一个模板,其中包含您需要修改的输入和输出参数.要返回sys_refcursor的结果,您需要声明一个与proc返回的select stmt/sys_refcursor 完全等效的行类型.下面我声明匹配输出字段的"type t_row",然后遍历返回的sys_refcursor.如果t_row与我的sys_refcursor匹配,那么它将填充sys_refcursor的每一行:

DECLARE
  P_CAE_SEC_ID_N NUMBER;
  P_FM_SEC_CODE_C VARCHAR2(200);
  P_PAGE_INDEX NUMBER;
  P_PAGE_SIZE NUMBER;
  v_Return sys_refcursor;
  type t_row is record (CAE_SEC_ID NUMBER,FM_SEC_CODE VARCHAR2(7),rownum number, v_total_count number);
  v_rec t_row;

BEGIN
  P_CAE_SEC_ID_N := NULL;
  P_FM_SEC_CODE_C := NULL;
  P_PAGE_INDEX := 0;
  P_PAGE_SIZE := 25;

  CAE_FOF_SECURITY_PKG.GET_LIST_FOF_SECURITY(
    P_CAE_SEC_ID_N => P_CAE_SEC_ID_N,
    P_FM_SEC_CODE_C => P_FM_SEC_CODE_C,
    P_PAGE_INDEX => P_PAGE_INDEX,
    P_PAGE_SIZE => P_PAGE_SIZE,
    P_FOF_SEC_REFCUR => v_Return
  );
  -- Modify the code to output the variable
  -- DBMS_OUTPUT.PUT_LINE('P_FOF_SEC_REFCUR = ');
  loop
    fetch v_Return into v_rec;
    exit when v_Return%notfound;
    DBMS_OUTPUT.PUT_LINE('sec_id = ' || v_rec.CAE_SEC_ID || 'sec code = ' ||v_rec.FM_SEC_CODE);
  end loop;

END;
Run Code Online (Sandbox Code Playgroud)