本文將告訴您,如何從 Oracle 預存程序結果集使用填滿
DataSet 物件。
資料集 物件會中央支援中斷連線,分佈使用 ADO.NET 資料案例。
資料集 是提供一個一致、 關聯式程式設計模型無論資料來源的資料的記憶體常駐表示。
資料集 表示一組完整的包括相關的資料表、 條件約束及資料表間的關聯性的資料。
需求
下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
- Microsoft Windows XP]、 [Windows 2000] 或 [Windows NT 4.0 Service Pack 6a
- Microsoft 資料存取元件 (MDAC) 2.6 或更新的版本
- 先知 8.0 伺服器或更新版本
- Microsoft Visual Studio.NET
- 用戶端電腦上安裝 Oracle 用戶端
本文假設您已熟悉下列主題:
- 在 Oracle 中的資料定義語言 (DDL) 查詢
- Visual Basic.NET 語法
- ActiveX 資料物件 (ADO)
在 Oracle 資料庫中建立封裝的步驟
- 使用下列程式碼,建立名為 Person 的資料表:
CREATE TABLE person
(ssn NUMBER(9) PRIMARY KEY,
fname VARCHAR2(15),
lname VARCHAR2(20));
INSERT INTO person VALUES(555662222,'Sam','Goodwin');
INSERT INTO person VALUES(555882222,'Kent','Clark');
INSERT INTO person VALUES(666223333,'Sally','Burnett');
COMMIT;
- 使用下列程式碼來建立封裝標頭:
CREATE OR REPLACE PACKAGE packperson
AS
TYPE tssn is TABLE of NUMBER(10)
INDEX BY BINARY_INTEGER;
TYPE tfname is TABLE of VARCHAR2(15)
INDEX BY BINARY_INTEGER;
TYPE tlname is TABLE of VARCHAR2(20)
INDEX BY BINARY_INTEGER;
PROCEDURE allperson
(ssn OUT tssn,
fname OUT tfname,
lname OUT tlname);
END packperson;
/
- 使用下列程式碼來建立封裝內文:
CREATE OR REPLACE PACKAGE BODY packperson
AS
PROCEDURE allperson
(ssn OUT tssn,
fname OUT tfname,
lname OUT tlname)
IS
CURSOR person_cur IS
SELECT ssn, fname, lname
FROM person;
percount NUMBER DEFAULT 1;
BEGIN
FOR singleperson IN person_cur
LOOP
ssn(percount) := singleperson.ssn;
fname(percount) := singleperson.fname;
lname(percount) := singleperson.lname;
percount := percount + 1;
END LOOP;
END;
END;
/
建立 Visual Basic.NET 應用程式的步驟
- 建立新的 Visual Basic.NET Windows 應用程式。Form1 加入到應用程式上,根據預設值。
- 將 DataGrid 控制項和 Button 控制項拖放至 [Form1 控制項。DataGrid1 和 Button1 加入到 Form1 的預設值。
- 為第一行程式碼中加入下列程式碼視窗:
Imports System.Data.OleDb
- Button1_Click 事件中加入下列程式碼:
Dim cnOra As New OleDbConnection("Provider=MSDAORA;Data Source=myOracleServer;" & _
"user id=myUID;password=myPWD;Persist Security info=False;")
Dim cmdPerson As New OleDbCommand _
("{call packPerson.allPerson({resultset 3, ssn, fname, lname})}", cnOra)
cmdPerson.CommandType = CommandType.Text
Dim daPerson As New OleDbDataAdapter(cmdPerson)
cnOra.Open()
Dim ds As New DataSet()
Try
daPerson.Fill(ds, "Persons")
Me.DataGrid1.DataSource = ds.Tables("Persons")
Catch ex As Exception
MsgBox(ex.Message)
End Try
cnOra.Close()
- 修改 OleDbConnection 字串,使之適用於您的環境。
- 按下 F5 鍵以建置並執行應用程式。
- 按一下 [Button1]。結果應該會出現在 DataGrid 控制項中。
注意: 由於唯一 Oracle 8.0 和更新版本支援 resultsets 擷取和執行預存程序,您必須使用 Oracle 8
x 伺服器來執行這個應用程式。
如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
176086?
(http://support.microsoft.com/kb/176086/EN-US/
)
如何從 Oracle 擷取資料錄集的預存程序使用 ADO
308073?
(http://support.microsoft.com/kb/308073/EN-US/
)
如何使用一個 DataReader 針對 Oracle Visual Basic.NET 中預存程序