PÉLDÁK a REF CURSOR-ra
A REF CURSOR példák a következő három Microsoft Visual Basic-példából állnak, amelyek bemutatják a REF CURSORs használatát.
Minta | Leírás |
---|---|
REF CURSOR Parameters in an OracleDataReader | Ez a példa egy PL/SQL tárolt eljárást hajt végre, amely egy REF CURSOR paramétert ad vissza, és beolvassa az értéket OracleDataReader. |
Adatok beolvasása több REF CURSOR-ből OracleDataReader használatával | Ez a példa egy PL/SQL tárolt eljárást hajt végre, amely két REF CURSOR paramétert ad vissza, és egy OracleDataReader használatával olvassa be az értékeket. |
Adathalmaz kitöltése egy vagy több REF CURSOR használatával | Ez a példa egy PL/SQL tárolt eljárást hajt végre, amely két REF CURSOR paramétert ad vissza, és kitölti DataSet a visszaadott sorokat. |
A példák használatához előfordulhat, hogy létre kell hoznia az Oracle-táblákat, és létre kell hoznia egy PL/SQL-csomagot és csomagtörzset.
Az Oracle-táblák létrehozása
Ezek a példák az Oracle Scott/Tiger sémában definiált táblákat használják. Az Oracle Scott/Tiger séma a legtöbb Oracle-telepítés részét képezi. Ha ez a séma nem létezik, az {OracleHome}\rdbms\admin\scott.sql SQL-parancsfájl használatával hozhatja létre a példákban használt táblákat és indexeket.
Az Oracle-csomag és -csomag törzsének létrehozása
Ezekhez a példákhoz a következő PL/SQL-csomag és csomagtörzs szükséges a kiszolgálón. Hozza létre a következő Oracle-csomagot az Oracle-kiszolgálón.
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;
/
Hozza létre a következő Oracle-csomag törzsét az Oracle-kiszolgálón.
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;
/