PL / SQL-Ausdruck-Ref-Cursor, der von einer gespeicherten Prozedur zurückgegeben wird
Wie kann ich das abrufen aus, um einen ref-cursor, der zurückgegeben wird, aus einer gespeicherten Prozedur (OUT-Variablen), und drucken Sie die resultierenden Zeilen in STDOUT in SQL*PLUS?
ORACLE-gespeicherten Prozedur:
PROCEDURE GetGrantListByPI(p_firstname IN VARCHAR2, p_lastname IN VARCHAR2,
p_orderby IN VARCHAR2, p_cursor OUT grantcur);
PL/SQL:
SET SERVEROUTPUT ON;
DECLARE
TYPE r_cursor IS REF CURSOR;
refCursor r_cursor;
CURSOR grantCursor IS
SELECT last_name, first_name
FROM ten_year_pis
WHERE year_added = 2010;
last_name VARCHAR2(100);
first_name VARCHAR2(100);
BEGIN
OPEN grantCursor;
FETCH grantCursor INTO last_name, first_name;
WHILE grantCursor%FOUND LOOP
PMAWEB_PKG.GetGrantListByPI(last_name, first_name, 'last_name', refCursor);
--HOW DO I LOOP THROUGH THE RETURNED REF CURSOR (refCursor)
--AND PRINT THE RESULTING ROWS TO STDOUT?
FETCH grantCursor into last_name, first_name;
END LOOP;
CLOSE grantCursor;
END;
/
InformationsquelleAutor der Frage elpisu | 2011-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: Dieser code ist ungetestet
Definieren Sie einen Eintrag für Ihre refCursor zurück geben, nennen Sie es, rec. Zum Beispiel:
Sobald Sie die refcursor der Rückkehr von Ihrem Verfahren können Sie fügen Sie den folgenden code, wo Ihre Kommentare sind jetzt:
InformationsquelleAutor der Antwort DCookie
Können Sie eine bind-variable auf SQLPlus-Ebene, dies zu tun. Natürlich, Sie haben wenig Kontrolle über die Formatierung der Ausgabe.
InformationsquelleAutor der Antwort Dave Costa
Wenn Sie möchten, drucken Sie alle Spalten in der select-Klausel können Sie gehen mit der autoprint-Befehl.
Hoffe, das gibt Ihnen eine Alternative Lösung
InformationsquelleAutor der Antwort akzhere