本記事では、Oracleが提供する.NETプラットフォーム開発向けのミドルウェアやツールを使って、.NET環境でOracleアプリケーション開発を効率的に行うためのノウハウを解説する。(編集部)
前回「Oracleにも“SQL CLR”と同じ開発生産性を!」では、Oracle Database 10g Release2の新機能であるOracle Database Extensions for .NET(以下、ODE.NET)を使用して、簡単な.NETストアド・プロシージャを作成する手順を紹介しました。今回は、.NETストアド・プロシージャでOracleデータベースにアクセスする方法について説明します。.NETストアド・プロシージャからOracleデータベースへアクセスするには、Oracle Data Provider for .NET(以降、ODP.NET)を使用します。
まずは、データベースにアクセスする簡単な.NETストアド・プロシージャとして、社員表(EMP表)の社員番号(EMPNO)を渡すと社員名(ENAME)を返し、該当社員がいない場合は「該当なし」を返す関数(GetEname)を作成してみましょう。
Visual Studio .NET(以下、VS.NET)より新しいプロジェクトを作成します。この際、Oracle Projectを選択してください。Oracle Projectとして、VS.NETのプロジェクトを開始した場合、クラスファイルの先頭にリスト1のようにODP.NETを使用するために必要な名前空間があらかじめ記述されています。
Imports Oracle.DataAccess.Client |
リスト1 Oracle Projectであらかじめインポートされる名前空間 |
リスト2のようにファンクションを作成します。データベースにアクセスする部分については、ODP.NETを使用します。
Public Shared Function GetEname(ByVal empno As Int16) As String |
リスト2 GetEname関数(VB.NET) |
ODP.NETでの開発の詳細については、@ITの記事「ODP.NETファーストステップ」をご覧ください。.NETストアド・プロシージャを作成する場合でも、基本的なコーディングは通常のODP.NETでの開発と変わりはありませんが、.NETストアド・プロシージャでは、リスト3のように接続情報を記述することができます。
' データベースへの接続の準備 |
リスト3 .NETストアド・プロシージャでのデータベース接続情報(VB.NET) |
「context connection=true」とすることで、すでに張られている呼び出し元のコネクションを引き継いで利用することができます。すでに接続しているコネクションを利用するため、ユーザー名やパスワードなどの接続情報は記述する必要がありません。
この接続方式を使用する場合、コネクションと同時にトランザクションも引き継ぎますので、明示的にトランザクションを開始することができません。新規にトランザクションを開始したい場合は、通常どおり「user id=scott; password=tiger; data source=orcl」などと記述して、新規コネクションを使用する必要があります。
コードの記述後、「ビルド」?「ソリューションの配置」をクリックしてOracle Deployment Wizard for .NET起動し、.NETストアド・プロシージャをデプロイします。この際、「メソッドおよびセキュリティ詳細を指定」では、スキーマとして「SCOTT」、セキュリティは「安全」を指定します。
デプロイが完了したら、実行してみましょう。
該当する社員番号がある場合はその社員名が、該当する社員番号が存在しない場合、「該当なし」が返されることが確認できます。(次ページへ続く)
Copyright © ITmedia, Inc. All Rights Reserved.