4 .NETストアド・ファンクションの開発およびデプロイのデモ
これらの項では、.NETストアド・ファンクションの開発およびデプロイ方法を説明します。
関連項目:
これらのコンポーネントの詳細は、Oracle Developer Tools for Visual Studioヘルプを参照してください
.NETストアド・ファンクション・デモの概要
このデモでは、Oracle Developer Tools for Visual Studioのみを使用しますが、一部のプロセスは他のOracleツールを使用して実行できます。また、このデモではOracle Developer Tools for Visual Studioの次のコンポーネントを参照します。
-
Oracleエクスプローラ
-
Oracle Project
-
Oracle Deployment Wizard for .NET
このデモでは、GetDeptNo
という.NETストアド・ファンクションを開発し、PL/SQLラッパーGETDEPTNO
とともにデプロイします。GetDeptNo
ファンクションは、従業員番号(EMPNO
)を受け入れて問合せを実行し、従業員の部門番号(DEPTNO
)を戻します。
ステップ3: デプロイするファンクションの選択
メソッドおよびセキュリティ詳細の指定ウィンドウが表示されます。
デプロイ対象となるプロジェクト全体を選択するか、展開して特定のファンクションをデプロイするように選択できます。このプロジェクトにはファンクションが1つしかないため、項目を1つ選択するとプロジェクト全体が選択されます。複数のファンクションまたはプロシージャがある場合は、デプロイする項目を個別に選択できます。
デプロイ対象として他のスキーマを選択する場合は、このウィンドウで選択できます。必要なスキーマがリストに表示されない場合は、別のフィルタを適用する必要があります。このプロセスの詳細は、Oracle Developer Tools for Visual Studioヘルプを参照してください。
ドロップダウン・リストを使用してセキュリティ・レベルを設定できます。設定可能なレベルは次のとおりです。
-
安全(デフォルト)
-
外部
-
危険
このデモでは、次を行います。
ステップ4: 適切なパラメータ型マッピングの判別
「パラメータ・タイプ・マッピング...」を選択した場合は、パラメータ・タイプ・マッピング・ウィンドウが表示され、ドロップダウン・リストを使用してデータ型を変更できます。
このデモでは、.NETデータ型System.Int32
からOracleのBINARY_INTEGER
型へのデフォルト・マッピングを受け入れます。
「OK」をクリックしてメソッドおよびセキュリティ詳細の指定ウィンドウに戻ります。
関連項目:
データ型マッピングの表は、「データ型変換」を参照してください
ステップ5: Oracleデータベースへのファンクションのデプロイ
Oracle Deployment Wizard for .NETのサマリー・ウィンドウが表示され、指定した内容がすべて表示されます。このウィンドウで「戻る」を選択すると任意の値を変更できます。
このデモを完了するには、次を行います。
ステップ6: ファンクションのテスト
この時点で、GetDeptNo()
ファンクションがOracleデータベースにデプロイされ、PL/SQLラッパー・ファンクションをコールしてテストする準備が完了したことになります。
このデモでは、ファンクションをコールするためにデフォルト・ユーザーscott
として接続する必要があります。
ファンクションを次のツールからコールしてテストします。
Oracle Developer Tools for Visual Studioからの起動
Oracle Developer Tools for Visual Studioでファンクションを検索してコールする手順は、次のとおりです。
ODP.NETクライアントからのコール
次のコード例に、.NETファンクションのPL/SQLラッパーの起動方法を示します。
using System; using System.Data; using Oracle.DataAccess.Client; namespace ODPNETClientApp { public class Class1 { public static void Main() { int empno = 7934; int deptno = 0; try { // Open a connection to the database OracleConnection con = new OracleConnection( "User Id=scott; Password=tiger; Data Source=inst1"); con.Open(); // Create and execute the command OracleCommand cmd = con.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "GETDEPTNO"; // Set parameters OracleParameter retParam = cmd.Parameters.Add(":DEPTNO", OracleDbType.Int32, System.Data.ParameterDirection.ReturnValue); cmd.Parameters.Add(":EMPNO", OracleDbType.Int32, empno, System.Data.ParameterDirection.Input); cmd.ExecuteNonQuery(); deptno = (int)retParam.Value; Console.WriteLine("\nEmployee# {0} working in department# {1}\n", empno, deptno); cmd.Dispose(); con.Close(); } catch (Exception e) { Console.WriteLine(e.Message); } } } // Class1 } // ODPNETClientApp namespace