検索
連載

VB.NETで楽々Oracleストアド・プロシージャ作成.NETでOracleアプリを作ろう(5)(1/4 ページ)

本記事では、Oracleが提供する.NETプラットフォーム開発向けのミドルウェアやツールを使って、.NET環境でOracleアプリケーション開発を効率的に行うためのノウハウを解説する。(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 前回「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)を作成してみましょう。

メモ:EMP表はSCOTTユーザーにデフォルトで存在するサンプルの表です。SCOTTユーザーについては第2回に記述したように、アカウントをアンロックする必要があります。

手順1 新規プロジェクトの作成

 Visual Studio .NET(以下、VS.NET)より新しいプロジェクトを作成します。この際、Oracle Projectを選択してください。Oracle Projectとして、VS.NETのプロジェクトを開始した場合、クラスファイルの先頭にリスト1のようにODP.NETを使用するために必要な名前空間があらかじめ記述されています。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

手順2 ファンクションの作成

 リスト2のようにファンクションを作成します。データベースにアクセスする部分については、ODP.NETを使用します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ODP.NETでの開発の詳細については、@ITの記事「ODP.NETファーストステップ」をご覧ください。.NETストアド・プロシージャを作成する場合でも、基本的なコーディングは通常のODP.NETでの開発と変わりはありませんが、.NETストアド・プロシージャでは、リスト3のように接続情報を記述することができます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 「context connection=true」とすることで、すでに張られている呼び出し元のコネクションを引き継いで利用することができます。すでに接続しているコネクションを利用するため、ユーザー名やパスワードなどの接続情報は記述する必要がありません。

メモ:「context connection」は.NETストアド・プロシージャだけで使用可能な属性です。

 この接続方式を使用する場合、コネクションと同時にトランザクションも引き継ぎますので、明示的にトランザクションを開始することができません。新規にトランザクションを開始したい場合は、通常どおり「user id=scott; password=tiger; data source=orcl」などと記述して、新規コネクションを使用する必要があります。

手順3 .NETストアド・プロシージャのデプロイ

 コードの記述後、「ビルド」?「ソリューションの配置」をクリックしてOracle Deployment Wizard for .NET起動し、.NETストアド・プロシージャをデプロイします。この際、「メソッドおよびセキュリティ詳細を指定」では、スキーマとして「SCOTT」、セキュリティは「安全」を指定します。

図1 Oracle Deployment Wizard for .NETでメソッドおよびセキュリティ詳細を指定
図1 Oracle Deployment Wizard for .NETでメソッドおよびセキュリティ詳細を指定

手順4 .NETストアド・プロシージャの実行

 デプロイが完了したら、実行してみましょう。

図2 Oracleエクスプローラより実行
図2 Oracleエクスプローラより実行

 該当する社員番号がある場合はその社員名が、該当する社員番号が存在しない場合、「該当なし」が返されることが確認できます。(次ページへ続く)

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る