Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
REF CURSOR örnekleri, REF CURSOR'larını kullanmayı gösteren aşağıdaki üç Microsoft Visual Basic örneğinden oluşur.
| Örnek | Açıklama |
|---|---|
| OracleDataReader'da REF CURSOR Parametreleri | Bu örnek, REF CURSOR parametresi döndüren bir PL/SQL saklı yordamı yürütür ve değeri bir OracleDataReader gibi okur. |
| OracleDataReader Kullanarak Birden Çok REF CURSOR'dan Veri Alma | Bu örnek, iki REF CURSOR parametresi döndüren bir PL/SQL saklı yordamı yürütür ve OracleDataReader kullanarak değerleri okur. |
| Bir veya Daha Fazla REF CURSOR Kullanarak DataSet Doldurma | Bu örnek, iki REF CURSOR parametresi döndüren bir PL/SQL saklı yordamını çalıştırır ve döndürülen satırlarla DataSet'yi doldurur. |
Bu örnekleri kullanmak için Oracle tablolarını oluşturmanız ve bir PL/SQL paketi ve paket gövdesi oluşturmanız gerekebilir.
Oracle Tablolarını Oluşturma
Bu örneklerde Oracle Scott/Tiger şemasında tanımlanan tablolar kullanılır. Oracle Scott/Tiger şeması çoğu Oracle yüklemesine dahil edilir. Bu şema yoksa, bu örnekler tarafından kullanılan tabloları ve dizinleri oluşturmak için {OracleHome}\rdbms\admin\scott.sql IÇINDEKI SQL komutları dosyasını kullanabilirsiniz.
Oracle Paketi ve Paket Gövdesi Oluşturma
Bu örnekler, sunucunuzda aşağıdaki PL/SQL paketini ve paket gövdesini gerektirir. Oracle sunucusunda aşağıdaki Oracle paketini oluşturun.
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;
/
Oracle sunucusunda aşağıdaki Oracle paket gövdesini oluşturun.
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;
/