Bagikan melalui


Contoh REF CURSOR

Contoh REF CURSOR terdiri dari tiga contoh Microsoft Visual Basic berikut yang menunjukkan penggunaan REF CURSOR.

Sampel Deskripsi
Parameter REF CURSOR di OracleDataReader Contoh ini mengeksekusi prosedur tersimpan PL/SQL yang mengembalikan parameter REF CURSOR, dan membaca nilainya sebagai OracleDataReader.
Mengambil Data dari Beberapa REF CURSOR Menggunakan OracleDataReader Contoh ini mengeksekusi prosedur tersimpan PL/SQL yang mengembalikan dua parameter REF CURSOR, dan membaca nilai menggunakan OracleDataReader.
Mengisi DataSet Menggunakan Satu atau Beberapa REF CURSOR Contoh ini menjalankan prosedur tersimpan PL/SQL yang mengembalikan dua parameter REF CURSOR, dan mengisi DataSet dengan baris yang dikembalikan.

Untuk menggunakan contoh ini, Anda mungkin perlu membuat tabel Oracle, dan Anda harus membuat paket PL/SQL dan isi paket.

Membuat Tabel Oracle

Contoh-contoh ini menggunakan tabel yang didefinisikan dalam skema Oracle Scott/Tiger. Skema Oracle Scott/Tiger disertakan dengan sebagian besar penginstalan Oracle. Jika skema ini tidak ada, Anda dapat menggunakan file perintah SQL di {OracleHome}\rdbms\admin\scott.sql untuk membuat tabel dan indeks yang digunakan oleh contoh ini.

Membuat Paket Oracle dan Isi Paket

Contoh-contoh ini memerlukan paket PL/SQL berikut dan isi paket di server Anda. Buat paket Oracle berikut di server Oracle.

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;  
/

Buat isi paket Oracle berikut di server Oracle.

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;  
/  

Lihat juga