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

时间:2009-07-03 09:13:05

标签: oracle oracle-sqldeveloper

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

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:6)

SET SERVEROUTPUT ON;
VARIABLE X REFCURSOR;
EXEC PROCEDURE_WITH_OUTPUT_SYS_REFCURSOR(:X);
PRINT X;

答案 2 :(得分: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;

答案 3 :(得分:1)

无法在sqldeveloper中的datagrid中显示refcursor。 我们可以定义一个refcursor,调用SP,然后打印refcursor,然后数据将以平面文本模式打印在Script输出窗口中,但不会出现在Query Result窗口中。