詳細介紹Oracle 存儲過程說明
隨著時代的進步科技的發(fā)展Oracle 存儲過程 版本也快速的提升與升級,下面我就對升級前和升級后的Oracle 存儲過程,做一下自己的解析。希望能夠?qū)Υ蠹矣袔椭?,下面就進行分析研究。
一、概述
訪問Oracle的兩種數(shù)據(jù)提供者lMicrosoft .NET Framework Data Provider for Oracle
Oracle .NET 數(shù)據(jù)提供程序隨 .NET 框架 1.1 一起提供。如果您使用的是 .NET 框架 1.0,您將需要下載 .NET Managed Provider for Oracle。無論是哪個版本,數(shù)據(jù)提供程序類都位于 System.Data.OracleClient 命名空間中。 lOLEDB l “Provider=OraOLEDB.1; Data Source=ds; User ID=system; Password=manager” #t#
Microsoft .NET Framework Data Provider for Oracle lMicrosoft .NET Framework Data Provider for Oracle是一個.NET Framework的組件。 Oracle 存儲過程為我們使用.NET訪問Oracle數(shù)據(jù)庫提供了極大的方便。 l這個組件的設計非常類似.NET中內(nèi)置的Microsoft .NET Framework Data Provider for SQL Server l添加System.Data.OracleClient.dll引用
二、核心類介紹
l.NET for Oracle組件中用于組織類和其他類型的名字空間是System.Data.OracleClient。在此名字空間中,主要包含四個核心類,它們分別是:OracleConnection、OracleCommand、OracleDataReader、OracleDataAdapter。 l可使用 System.Data.OracleClient 命名空間中類的子集來執(zhí)行 Oracle 存儲過程和函數(shù)。其具體使用方法幾乎和SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter是一模一樣的。 l添加using System.Data.OracleClient 名稱空間
OracleConnection對象
三、執(zhí)行Oracle存儲過程
l執(zhí)行 Oracle 存儲過程與執(zhí)行 SQL Server 存儲過程類似。 lOracle 存儲過程不能將值作為 RETURN 語句的一部分返回,而只能將其作為 OUT 參數(shù)返回。 l除了通過 REF CURSOR 輸出參數(shù)以外,您不能返回結(jié)果集。 l您只能使用 RETURN 參數(shù)檢索 Oracle 函數(shù)的返回值 l下面的步驟說明了如何執(zhí)行 Oracle 存儲過程和檢索它返回的結(jié)果。
1.在 HR 架構(gòu)中創(chuàng)建一個名為 COUNT_JOB_HISTORY 的存儲過程,以計算 JOB_HISTORY 表中的記錄數(shù)。
2.將 System.Data.OracleClient.dll(用于 Oracle 的 Microsoft .NET 框架數(shù)據(jù)提供程序)的引用添加到項目中。
3.使用 using 指令導入 OracleClient 類中的類型。 using System.Data.OracleClient;
4.創(chuàng)建一個 OracleConnection 對象。 OracleConnection conn = new OracleConnection("Data Source=oracledb; User Id=UserID;Password=Password;");用您的值替換 Oracle 數(shù)據(jù)庫的名稱、用戶名和密碼。
5.創(chuàng)建一個 OracleCommand 對象。將其 Oracle 存儲過程設置為第 4 步中創(chuàng)建的連接。將其 CommandText 設置為存儲過程的名稱,并將其 CommandText 屬性設置為 CommandType.StoredProcedure。當您調(diào)用第 8 步中介紹的一個 Execute() 方法時,該命令對象將執(zhí)行指定的存儲過程。
OracleCommand cmd = new OracleCommand(); lcmd.Connection = conn; lcmd.CommandText = "COUNT_JOB_HISTORY"; lcmd.CommandType = CommandType.StoredProcedure;