在ADO.NET中使用Oracle儲存程式(轉)
在ADO.NET中使用Oracle儲存程式(轉)[@more@] 隨著近來 的釋出,.NET開發人員最終擁有一套透過使用ADO.NET來快速訪問Oracle資料庫的方法。在 裡,我討論瞭如何使用Oracle管理提供者來連線和執行SQL資料庫。現在讓我們看看如何在Oracle儲存程式中使用一個新的管理提供者。 可能和你以前的方法不一樣 如果你習慣於SQL伺服器程式的開發,你會發覺Oracle資料庫世界裡是另一番天地。當執行SQL伺服器程式時,訪問SQL查詢結果的過程正如把一個資料賦予DataReader, DataSet等那樣的簡單。這一過程和儲存程式的執行大致一樣,因為當一個命令執行時,SQL伺服器程式就會返回結果。表A中的程式碼執行了一個名為sp_persons的儲存程式並把結果存放到DataSet。 表A程式碼如下: Listing A Dim connectionString As String Dim sqlString As String Dim dataAdapter As System.Data.SqlClient.SqlDataAdapter; connectionString = "server= test;uid=test;pwd=test;database=.test.dbo" sqlString = “sp_persons” dataAdapter = New System.Data.SqlClient.SqlDataAdapter(sql,connectionString) Dim ds As New DataSet() dataAdapter.Fill(ds, “Persons”) Oracle沒有遵循SQL伺服器的返回資料模式。一個Oracle查詢的結果以一個指標的形式返回,這一指標也是作為Oracle儲存程式的一個輸出引數。所以當從.NET訪問Oracle資料庫時,你必須指定一個引數來指向指標。 利用OracleParameter生成引數 你可以充分利用System.Data.OracleClient.OracleParameter類,這些類能夠處理輸出和輸入引數,並生成和配置引數。OracleCommand類包含一個能夠初始化引數物件的引數屬性。 表B範例如下: Listing B Dim conn As New OracleConnection() Dim comm As New OracleCommand() Dim pOutput As OracleParameter Dim dr As OracleDataReader conn.ConnectionString = “data source=oracle.server;user id=test;password=test” comm.CommandText = “DATABASE.STORED_PROCEDURE_NAME” comm.CommandType = CommandType.StoredProcedure pOutput = comm.Parameters.Add(“pcur”, OracleClient.OracleType.Cursor) pOutput.Direction = ParameterDirection.Output comm.Connection = conn conn.Open() dr = comm.ExecuteReader() 表B範例中,我建立了一個Oracle連線和使用了一個儲存程式作為命令。對比表A和表B,我們可以注意到命令型別必須設定為StoredProcedure,預設情況下是文字,這對SQL的執行是非常有好處的。一旦命令和連線建立起來,必須新增一個輸出引數來接收從儲存程式中返回的指標。新增OracleParameter物件的過程需要型別(如指標)和名字上的匹配。可能的設定包括:Input, Output,InputOutput, or ReturnValue。在這個範例中,指標接受了儲存程式的輸出,所以我把它的Direction設定為Output,最後,我開啟了OracleDataReader以獲得命令的結果。 儲存程式的資料傳遞 儲存程式通常會接受一個或多個輸出資料,這些資料用於控制程式的結果。例如,你不必需要從資料庫返回每一個記錄,相反,你只需返回一個與輸出結果相匹配的記錄。 OracleParameter物件提供了這樣的功能,表C演示了使用一個OracleParameter物件生成一個輸入引數的方法。這裡我建立一個引數的Direction屬性為Input,OracleType enum定義了所有的Oracle資料型別,比如char,byte, DateTime, Float, Number等等。 微小的問題也會導致嚴重錯誤的產生 很多開發人員都已經習慣了資料庫系統的程式開發,但是,從一個系統向另一個系統的轉換會引起很多的麻煩,你必須清楚地理解各個資料庫系統,這樣才能更好地編寫原始碼。SQL伺服器程式與Oracle之間的主要區別在於從儲存程式的不同返回方式。使用Oracle指標與使用OracleParameter一樣很方便。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-957100/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在應用程式中將OJB作為一個儲存層使用(一) (轉)
- 在應用程式中將OJB作為一個儲存層使用(二) (轉)
- 在應用程式中將OJB作為一個儲存層使用(三) (轉)
- 在應用程式中將OJB作為一個儲存層使用(四) (轉)
- 在應用程式中將OJB作為一個儲存層使用(六) (轉)
- 在應用程式中將OJB作為一個儲存層使用(五) (轉)
- 在Oracle中使用自治事務儲存日誌表條目(轉)Oracle
- Oracle 在asm前使用udev繫結共享儲存OracleASMdev
- ADO & ADO.NET中使用儲存過程的兩個共用的函式 (轉)儲存過程函式
- 在ORACLE裡用儲存過程定期分割表(轉)Oracle儲存過程
- Oracle在儲存過程中呼叫其他使用者的表授權Oracle儲存過程
- ADO中sqlserver儲存過程使用 (轉)SQLServer儲存過程
- C#二十六 使用Ado.Net呼叫儲存過程C#儲存過程
- 在Oracle中查詢儲存過程和函式Oracle儲存過程函式
- 在SQL Server中儲存和輸出圖片 (轉)SQLServer
- 在關聯式資料庫中儲存RDF (轉)資料庫
- 使用容器化塊儲存OpenEBS在K3s中實現持久化儲存持久化
- 在 SQL Server 的儲存過程中呼叫 Com 元件 (轉)SQLServer儲存過程元件
- Delphi中儲存影像列表 (轉)
- Oracle中定義package以及儲存過程的使用OraclePackage儲存過程
- 在session中儲存JSON物件SessionJSON物件
- 如何在Oracle中使用Java儲存過程(詳解)(轉)OracleJava儲存過程
- 數值在Oracle的內部儲存Oracle
- oracle事務中的儲存點Oracle
- java中呼叫ORACLE儲存過程JavaOracle儲存過程
- 在.Net中將MailMessage儲存為本地eml檔案(轉)AI
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- 在Mysql中直接儲存圖片(轉)MySql
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- [轉]oracle rac 10.2 的在 linux 上的儲存選項OracleLinux
- oracle 儲存過程遊標的使用Oracle儲存過程
- 使用ORACLE ASMFD配置ORACLE儲存標準化OracleASM
- Linux中輕鬆使用USB移動儲存器(轉)Linux
- (轉)如何oracle除錯儲存過程Oracle除錯儲存過程
- 在vue中,localStorage本地儲存應用。Vue
- 在儲存過程中寫truncate table儲存過程
- 使用Java實現在SQLserver中實現圖片的儲存JavaSQLServer
- [轉貼於菜鳥之Oracle & Java]在sqlplus中呼叫函式和儲存過程OracleJavaSQL函式儲存過程