Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die REF CURSOR-Beispiele bestehen aus den folgenden drei Microsoft Visual Basic-Beispielen, die die Verwendung von REF CURSORs veranschaulichen.
Beispiel | BESCHREIBUNG |
---|---|
REF CURSOR-Parameter in einem OracleDataReader | In diesem Beispiel wird eine gespeicherte PL/SQL-Prozedur ausgeführt, die einen REF CURSOR-Parameter zurückgibt, und der Wert wird als Wert OracleDataReadergelesen. |
Abrufen von Daten aus mehreren REF CURSORs mithilfe eines OracleDataReader | In diesem Beispiel wird eine gespeicherte PL/SQL-Prozedur ausgeführt, die zwei REF CURSOR-Parameter zurückgibt und die Werte mit einem OracleDataReader liest. |
Ausfüllen eines DataSets mit einem oder mehreren REF CURSORs | In diesem Beispiel wird eine gespeicherte PL/SQL-Prozedur ausgeführt, die zwei REF CURSOR-Parameter zurückgibt, und füllt eine DataSet mit den zurückgegebenen Zeilen aus. |
Um diese Beispiele zu verwenden, müssen Sie möglicherweise die Oracle-Tabellen erstellen, und Sie müssen ein PL/SQL-Paket und einen Pakettext erstellen.
Erstellen der Oracle-Tabellen
In diesen Beispielen werden Tabellen verwendet, die im Oracle Scott/Tiger-Schema definiert sind. Das Oracle Scott/Tiger-Schema ist in den meisten Oracle-Installationen enthalten. Wenn dieses Schema nicht vorhanden ist, können Sie die SQL-Befehlsdatei in {OracleHome}\rdbms\admin\scott.sql verwenden, um die von diesen Beispielen verwendeten Tabellen und Indizes zu erstellen.
Erstellen des Oracle-Pakets und des Paketkörpers
Diese Beispiele erfordern den folgenden PL/SQL-Paket- und Pakettext auf Ihrem Server. Erstellen Sie das folgende Oracle-Paket auf dem Oracle-Server.
CREATE OR REPLACE PACKAGE CURSPKG AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,
IO_CURSOR IN OUT T_CURSOR);
PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,
DEPTCURSOR OUT T_CURSOR);
END CURSPKG;
/
Erstellen Sie den folgenden Oracle-Paketkörper auf dem Oracle-Server.
CREATE OR REPLACE PACKAGE BODY CURSPKG AS
PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,
IO_CURSOR IN OUT T_CURSOR)
IS
V_CURSOR T_CURSOR;
BEGIN
IF N_EMPNO <> 0
THEN
OPEN V_CURSOR FOR
SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.EMPNO = N_EMPNO;
ELSE
OPEN V_CURSOR FOR
SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;
END IF;
IO_CURSOR := V_CURSOR;
END OPEN_ONE_CURSOR;
PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,
DEPTCURSOR OUT T_CURSOR)
IS
V_CURSOR1 T_CURSOR;
V_CURSOR2 T_CURSOR;
BEGIN
OPEN V_CURSOR1 FOR SELECT * FROM EMP;
OPEN V_CURSOR2 FOR SELECT * FROM DEPT;
EMPCURSOR := V_CURSOR1;
DEPTCURSOR := V_CURSOR2;
END OPEN_TWO_CURSORS;
END CURSPKG;
/