.net之oraclecommand訪問oracle
本文討論瞭如何使用 ADO.NET 訪問 Oracle 儲存過程(稱為 SQL 塊)和函式(返回單個值的程式設計塊)。
您可以使用以下託管資料提供程式連線到 Oracle :Microsoft .NET Oracle 提供程式、OLE DB .NET 提供程式、ODBC .NET 資料提供程式以及 Oracle 的 ODP.NET 提供程式。本文使用用於 Oracle 的 Microsoft?.NET 框架資料提供程式。使用 Oracle ODP.NET 資料提供程式或用於 OLE DB 的 Microsoft .NET 框架資料提供程式時可使用不同的功能。
Oracle .NET 資料提供程式隨 .NET 框架 1.1 一起提供。如果您使用的是 .NET 框架 1.0,您將需要下載 .NET Managed Provider for Oracle。無論是哪個版本,資料提供程式類都位於 System.Data.OracleClient 名稱空間中。
概述
PL/SQL 是 SQL 的
Oracle 實現。它與 Microsoft?SQL Server? 所使用的 T-SQL
類似,但也有一些不同之處,本文稍後對此進行了詳細討論。與 T-SQL 一樣,PL/SQL 擴充套件了標準 SQL。PL/SQL
用於定義命名程式設計塊,如儲存過程、函式和觸發器。
類
可使用 System.Data.OracleClient 名稱空間中類的子集來執行 Oracle 儲存過程和函式。下表對這些類進行了說明:
類 說明
OracleCommand
針對 Oracle 資料庫執行的儲存過程的 SQL 語句。
OracleConnection
開啟的資料庫連線。
OracleParameter
OracleCommand 的引數,也可能是它到 DataColumn 的對映。
OracleParameterCollection
OracleParameter 物件的集合。
OracleType
Oracle 資料型別和結構的列舉。
執行儲存過程
執行 Oracle 儲存過程與執行 SQL Server 儲存過程類似。下面的步驟說明了如何執行 Oracle 儲存過程和檢索它返回的結果。
1.
在 HR 架構中建立一個名為 COUNT_JOB_HISTORY 的儲存過程,以計算 JOB_HISTORY 表中的記錄數。
CREATE OR new PROCEDURE COUNT_JOB_HISTORY
(
reccount OUT NUMBER
)
IS
BEGIN
SELECT COUNT(*) INTO reccount
FROM JOB_HISTORY;
END COUNT_JOB_HISTORY;
HR 架構是預設 Oracle 中包含的一個示例。
2.
將 System.Data.OracleClient.dll(用於 Oracle 的 Microsoft .NET 框架資料提供程式)的引用新增到專案中。
3.
使用 using 指令匯入 OracleClient 類中的型別。
using System.Data.OracleClient;
4.
建立一個 OracleConnection 物件。
OracleConnection conn = new OracleConnection("Data Source=oracledb;
User Id=UserID;Password=Password;");
用您的值替換 Oracle 資料庫的名稱、使用者名稱和密碼。
5.
創
建一個 OracleCommand 物件。將其 Connection 屬性設定為第 4 步中建立的連線。將其 CommandText
設定為儲存過程的名稱,並將其 CommandText 屬性設定為 CommandType.StoredProcedure。當您呼叫第 8
步中介紹的一個 Execute() 方法時,該命令物件將執行指定的儲存過程。
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "COUNT_JOB_HISTORY";
cmd.CommandType = CommandType.StoredProcedure;
如果您的儲存過程名稱含有特殊字元,您就必須使用轉義序列。您可以透過重置 CommandText 屬性來重用現有的 OracleCommand 物件。
6.
建立輸入、輸出和返回值的 OracleParameter 物件,並將其新增到 OracleCommand 物件的引數集合中。
cmd.Parameters.Add("reccount", OracleType.Number).Direction =
ParameterDirection.Output;
該行是以下兩行程式碼的簡寫形式:
cmd.Parameters.Add("reccount", OracleType.Number);
cmd.Parameters["reccount"].Direction = ParameterDirection.Output;
7.
如果您要檢索結果集,請建立 DataSet、DataTable 或 DataReader。在本示例中,我們只是獲取第 6 步中建立的輸出引數中的計數。
8.
使用 OracleCommand 物件的一個 Execute 方法開啟連線並執行儲存過程,如下所示:
ExecuteReader
透過執行能夠返回結果集的儲存過程生成 OracleDataReader。
ExecuteNonQuery
執行不返回結果集的查詢或過程,返回受影響的行數。
ExecuteOracleNonQuery
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-703292/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LightDB/postgresql內建特性之訪問oracle之oracle_fdw介紹SQLOracle
- Oracle外網訪問Oracle
- Oracle 訪問路徑Oracle
- [ASP.NET]關於DOT NET的IIS配置LocalHost訪問和127.0.0.1訪問的區別ASP.NETlocalhost127.0.0.1
- Holer實現Oracle外網訪問Oracle
- Oracle資料庫限制訪問IPOracle資料庫
- .Net Core實戰之基於角色的訪問控制的設計
- php之像訪問陣列一樣訪問物件PHP陣列物件
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- Oracle/MySQL透過odbc訪問PostgreSQL for LightDBOracleMySql
- HTTP之訪問控制「CORS」HTTPCORS
- .net core下訪問控制層的實現
- .net core使用CSRedisCore訪問Redis主從+哨兵Redis
- [開源] .Net ORM 訪問 Firebird 資料庫ORM資料庫
- Oracle 透過透明閘道器 訪問 mysqlOracleMySql
- Oracle 通過透明閘道器訪問mysqlOracleMySql
- Hive學習之JDBC訪問HiveJDBC
- 誰說.net core不好動態訪問webservice?看這篇文章,C#快速實現動態訪問webservice,相容.net framework和.net core+WebC#Framework
- .NET全域性靜態可訪問IServiceProvider(支援Blazor)IDEBlazor
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問MySQL資料庫OracleMySql資料庫
- Oracle RAC Cache Fusion 系列十三:PCM資源訪問Oracle
- Oracle資料訪問元件ODAC的安裝方法Oracle元件
- 透過Kerberos認證訪問Oracle11gROSOracle
- kubernetes使用http rest api訪問叢集之使用postman工具訪問 apiserverHTTPRESTAPIPostmanServer
- 【.NET 6】使用EF Core 訪問Oracle+Mysql+PostgreSQL並進行簡單增改操作與效能比較OracleMySql
- Oracle 11.2.0.4 透過透明閘道器訪問mysql 8.0.16OracleMySql
- 十二、.net core(.NET 6)新增通用的訪問webapi的方法(包括HttpClient和HttpWebRequest)WebAPIHTTPclient
- Kubernetes API訪問鑑權之Basic模式API模式
- 運用Log和Trace檔案排除Oracle Net問題Oracle
- [開源] .Net 使用 ORM 訪問 華為GaussDB資料庫ORM資料庫
- .NET程式遮蔽一些無效蜘蛛的訪問配置
- 安裝oracle11g碰到“無法訪問臨時位置”的問題Oracle
- Vue原始碼之資料的代理訪問Vue原始碼
- 設計模式學習之訪問者模式設計模式
- kubernetes實踐之十六:RBAC 角色訪問控制
- C#設計模式之訪問者模式C#設計模式
- 提高網站訪問效能之Tomcat優化網站Tomcat優化
- 【趣味設計模式系列】之【訪問者模式】設計模式