Mar*_*son 9 oracle oracle-sqldeveloper
如果我有一个函数返回查询的引用游标,我如何在SQL Developer中查看它的结果集?Toad有一个特殊的标签用于查看参考光标的结果,这是我想要找到的功能.
SET SERVEROUTPUT ON;
VARIABLE X REFCURSOR;
EXEC PROCEDURE_WITH_OUTPUT_SYS_REFCURSOR(:X);
PRINT X;
Run Code Online (Sandbox Code Playgroud)
嗨,我知道这是前一段时间被问到的,但我只是想出来了,这可能对其他人有所帮助.不确定这是否正是您正在寻找的,但这就是我调用存储过程并在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)
归档时间: |
|
查看次数: |
32665 次 |
最近记录: |