クエリの参照カーソルを返す関数がある場合、SQL Developerでこの結果セットを表示するにはどうすればよいですか?Toadには、参照カーソルの結果を表示するための特別なタブがあります。これは、私が見つけたい機能です。
4 に答える
SET SERVEROUTPUT ON;
VARIABLE X REFCURSOR;
EXEC PROCEDURE_WITH_OUTPUT_SYS_REFCURSOR(:X);
PRINT X;
結果レコードのカーソルフィールドをダブルクリックします。右側には「...」アイコンがあります。これをクリックすると内容が表示されます
こんにちは私はこれが少し前に尋ねられたことを知っています、しかし私はちょうどこれを理解しました、そしてそれは他の誰かを助けるかもしれません。これがまさにあなたが探しているものであるかどうかはわかりませんが、これは私がストアドプロシージャを呼び出してSQLDeveloperで出力を表示する方法です。
SQL Developerでプロシージャを表示しているときに、右クリックして「実行」を選択するか、Ctrl+F11を選択して「PL/SQLの実行」ウィンドウを表示します。これにより、変更する必要のある入力パラメータと出力パラメータを含むテンプレートが作成されます。sys_refcursorの結果を返すには、procによって返されるselect stmt/sys_refcursorとまったく同じ行タイプを宣言する必要があります。以下では、出力フィールドに一致する「type t_row」を宣言してから、返された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;
sqldeveloperのdatagridにrefcursorを表示する方法はありません。refcursorを定義し、SPを呼び出してから、refcursorを印刷すると、データはプレーンテキストモードのスクリプト出力ウィンドウに印刷されますが、クエリ結果ウィンドウには印刷されません。