Oracle Database 2日で.NET開発者ガイド 11g リリース1(11.1) E05695-02 |
|
この章の内容は次のとおりです。
.NETストアド・プロシージャは、SQL文またはPL/SQL文を含む.NET言語で記述されたメソッドまたはプロシージャです。
カスタム・ストアド・プロシージャおよびファンクションは、C#やVB.NETなどの.NETに準拠した任意の言語を使用して記述できます。また、これらの.NETストアド・プロシージャは、他のPL/SQLストアド・プロシージャまたはJavaストアド・プロシージャと同様にデータベースで使用できます。.NETストアド・プロシージャは、PL/SQLパッケージ、プロシージャ、ファンクションおよびトリガーからコールできます。また、SQL文からコールすることも、PL/SQLプロシージャまたはファンクションをコールできる任意の場所からコールすることもできます。
この章の例を実行するには、Oracle Database Extensions for .NET(.NETストアド・プロシージャを記述できるデータベース・オプション)をデータベースにインストールして構成しておく必要があります。
この章では、.NETストアド・プロシージャをアプリケーションで使用およびデプロイする方法を説明します。
.NETストアド・プロシージャを使用するには、最初に共通言語ランタイム・エージェント(OraClrAgent
サービス)を開始する必要があります。このサービスはデフォルトでは開始されません。このサービスは、クライアント上ではなくOracle Database上にあることに注意してください。
サービスのリストをスクロールし、「Oracle
OracleHomeName
ClrAgnt
」を選択します。
「サービス コントロール」ウィンドウに、OracleClrAgent
を開始していることが表示されます。
OracleClrAgent
の状態が「開始」
に変わっていることを確認します。
次に、SYSDBA
としてデータベース接続を作成する必要があります。これにより、Oracleプロジェクトをデプロイできるようになります。
表示されている場合は、手順6に進みます。
「Data source」に「Oracle Database (Oracle ODP.NET)」と表示されていない場合は、「Change」を選択します。
「Change Data Source」ウィンドウが表示されます。
これで、「Server Explorer」ウィンドウにSYS.ORCL
接続が含まれます。
.NETでストアド・プロシージャを使用するには、ストアド・プロシージャを保持するための新しいOracleプロジェクトを最初に作成する必要があります。
「New Project」ダイアログ・ボックスが表示されます。
C:¥HR_Projects
と入力します。
これで、.NETストアド・プロシージャを作成する準備ができました。
Visual C#:
using Oracle.DataAccess.Client; using Oracle.DataAccess.Types;
Visual Basic:
Imports Oracle.DataAccess.Client Imports Oracle.DataAccess.Types
Oracle.DataAccess.dll
に参照を追加します。
getDepartmentno()
メソッドをClass1
宣言にコピーします。Visual C#
public static int getDepartmentno(int employee_id) { int department_id = 0; // Get a connection to the db OracleConnection conn = new OracleConnection(); conn.ConnectionString = "context connection=true"; conn.Open(); // Create and execute a command OracleCommand cmd = conn.CreateCommand(); cmd.CommandText = "select department_id from employees where employee_id = :1"; cmd.Parameters.Add(":1", OracleDbType.Int32, employee_id, ParameterDirection.Input); OracleDataReader rdr = cmd.ExecuteReader(); while(rdr.Read()) department_id=rdr.GetInt32(0); rdr.Close(); cmd.Dispose(); // Return the employee's department number return department_id; }
Visual Basic:
Public Shared Function getDepartmentno(ByVal employee_id As Integer) As Integer Dim department_id As Integer = 0 ' Get a connection to the db Dim conn As OracleConnection = New OracleConnection() conn.ConnectionString = "context connection=true" conn.Open() ' Create and execute a command Dim cmd As OracleCommand = conn.CreateCommand() cmd.CommandText = "select department_id from employees where employee_id = :1" cmd.Parameters.Add(":1", OracleDbType.Int32, employee_id, ParameterDirection.Input) Dim rdr As OracleDataReader = cmd.ExecuteReader() While rdr.Read() department_id = rdr.GetInt32(0) End While rdr.Close() cmd.Dispose() ' Return the employee's department number Return department_id End Function
Class1
を保存します。
これまでの手順により、「.NETストアド・ファンクションおよびプロシージャの作成」で作成した.NETストアド・プロシージャをデプロイできる状態になっています。
「.NET用のOracleデプロイメント・ウィザード」ウィンドウが表示されます。
Visual Basic:
Visual Basicを使用している場合は、Microsoft.VisualBasic
アセンブリも参照アセンブリとして表示されます。
「getDepartmentno()」
メソッドを選択します。「メソッドの詳細」で、スキーマ・リストから「HR」を選択します。
「次へ」をクリックします。
これで、前の項でデプロイした.NETストアド・プロシージャを実行する準備ができました。
HR.ORCL
接続をオープンします。「Functions」を開きます。「GETDEPARTMENTNO」
を右クリックして「Run」を選択します。「Run Function」ウィンドウが表示されます。
「EMPLOYEE_ID」
の「Value」
に100
を入力します。「OK」をクリックします。
90
であることを確認します。これは、EMPLOYEE_ID
100
は部門90に含まれると示します。作成したばかりの.NETストアド・プロシージャは、Server Explorerから実行する他に、ODT問合せウィンドウを使用して実行することもできます。
|
![]() Copyright © 2009 Oracle Corporation. All Rights Reserved. |
|