如果我有一个返回查询引用游标的函数,我如何在SQL Developer中查看它的结果集? Toad有一个特殊的标签,用于查看参考光标的结果,这是我想要找到的功能。
答案 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窗口中。