REF CURSOR 範例是由下列三個Microsoft Visual Basic 範例所組成,這些範例示範如何使用 REF CURSOR。
| 範例 | 說明 |
|---|---|
| OracleDataReader 中的 REF CURSOR 參數 | 這個範例會執行會傳回 REF CURSOR 參數的 PL/SQL 預存程式,並將值讀取為 OracleDataReader。 |
| 使用 OracleDataReader 從多個 REF CURSOR 擷取數據 | 此範例會執行 PL/SQL 預存程式來傳回兩個 REF CURSOR 參數,並使用 OracleDataReader 讀取值。 |
| 使用一或多個 REF CURSOR 填入數據集 | 這個範例會執行會傳回兩個 REF CURSOR 參數的 PL/SQL 預存程式,並以傳回的數據列填入 DataSet 。 |
若要使用這些範例,您可能需要建立 Oracle 數據表,而且您必須建立 PL/SQL 套件和套件主體。
建立 Oracle 數據表
這些範例會使用 Oracle Scott/Tiger 架構中定義的數據表。 Oracle Scott/Tiger 架構包含在大部分的 Oracle 安裝中。 如果此架構不存在,您可以使用 {OracleHome} 中的 SQL 命令檔案,\rdbms\admin\scott.sql來建立這些範例所使用的數據表和索引。
建立 Oracle 套件和套件主體
這些範例需要伺服器上的下列 PL/SQL 套件和封裝主體。 在 Oracle 伺服器上建立下列 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;
/
在 Oracle 伺服器上建立下列 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;
/
另請參閱
- Oracle REF CURSOR
- ADO.NET 概觀