developer WINDOWS

.NET用のツール
Christian Shay著

Oracle Developer Tools for Visual Studio .NET(ODT)を使用すると、Windows上でのOracle Databaseの開発作業を素早く、かつ簡単におこなうことができます。

たとえば、Oracle Databaseから取得したデータを操作するC#やVB.NETのルーチンを開発しているとします。 ストアド・プロシージャの編集およびテスト、表内のデータの変更、表やビューの構造の変更、そのほかのさまざまなデータベース関連のタスクを実行するために、データベースにアクセスする必要があります。

これまでは、こうしたタスクを管理するのにSQL*PlusやToadなどのツールを使用していましたが、こうしたタスクをすべてMicrosoft Visual Studio .NET内から直接実行するためのツールセットがあれば便利だと考えている方も多いでしょう。 つまり、グラフィカルなデザイナとウィザードが組み込まれていて、特定のデータベース操作を実行するために必要なSQLの作成という面倒な仕事を引き受けてくれる、 さらには、C#やVB.NETのデータ・アクセス・コードを自動的に生成してくれる、そんなツールセットです。

Oracle Developer Tools for Visual Studio .NETは、まさにそうした望みをかなえるツールです。 ODTのリリースにより、上記すべての機能が実現されました。 この記事では、ODTが提供しているさまざまな機能を簡単に紹介します。 また、Oracle Database 10g Release 2 for Windowsに組み込まれている新しい.NETストアド・プロシージャの機能を紹介し、ODTを使って.NETストアド・プロシージャをOracle Databaseに配置する方法を示します。

概要

ODTは、Visual Studio .NETと緊密に統合されたアドインです。 2005年6月に最初にリリースされたODTは、無償でOracle Technology Networkからダウンロードできます。

ODTのおもな機能は次のとおりです。

  • Oracle Explorer
  • デザイナとウィザード
  • Oracle Data Window
  • Oracle PL/SQLエディタ
  • 自動コード生成
  • SQL問合せウィンドウ
  • 統合されたオンライン・ヘルプ


Oracle Explorer: Oracleスキーマを表示する

表、ビュー、またはそのほかのOracleデータベース・オブジェクトを検索し表示する必要があるときは、Oracle Explorerを使用するのが一番です。 Oracle Explorerを起動するには、メイン・メニューで、「 表示 」→「 Oracleエクスプローラ 」を選択します。 Oracle Explorer(図1参照)は、Oracleスキーマの構造を表示するためのツリー・コントロールです。 表、ビュー、パッケージ、ストアド・プロシージャなどのOracleスキーマ・オブジェクトを表示できます。 スキーマ・オブジェクトを選択すると、Visual Studio .NETプロパティ・ペインに、列データ型やストアド・プロシージャ・パラメータ型などのメタデータが表示されます。

図1
図1: Oracle Explorer(左)と Oracle PL/SQLエディタ(右)


各スキーマ・オブジェクトのコンテキスト・メニューには、さらなる機能が用意されています。 スキーマ・オブジェクトのSQLスクリプトを生成したり、提供されているフィルタを使用して、表示されるスキーマ・オブジェクトの種類を制限したり、デザイナやウィザードを実行してスキーマを変更したりできます。 たとえば、表の構造を表示した状態で、コンテキスト・メニューからOracle表デザイナを起動して表の設計を変更できます。

デザイナとウィザード: データベースの操作を簡素化する

ODTには、各種のグラフィカルなデザイナやウィザードが用意されており、指示された手順にしたがって操作するだけで、データベース・オブジェクト(表、ビュー、ストアド・プロシージャ、ストアド・ファンクション、PL/SQLパッケージ、シーケンス、索引、制約、トリガー、シノニムなど)を作成または変更できます。

表デザイナを起動するには、Oracle Explorerで目的の表を右クリックし、「 設計 」を選択します。 表デザイナ(図2)を使用すれば、これまでのようにデータ型を調べたり、SQLの構文を覚えたりする必要がなくなります。 表名と列名を指定して、ドロップダウンリストから適切なデータ型を選択し、「 保存 」をクリックするだけで、表の作成や変更がおこなえます。 新しく作成したスキーマ・オブジェクトは、Oracle Explorerのツリー制御に即座に表示されます。

図2
図2: 表デザイナ


Oracle Data Window:表データを表示/変更する

表やビューのデータを素早く閲覧するには、Oracle Explorerで目的の表またはビューを右クリックして、「 データの取得 」を選択します。 Oracle Data Window(図3)に、分かりやすいグリッド形式で表やビューのデータが表示されます。このウィンドウで、Visual Studio .NET開発環境から離れることなく、データの挿入、更新、削除を実行できます。 行を変更した後、カーソルを別の行に移動するだけで、変更したデータが即座にコミットされます。 大きな表では、行番号を指定して特定の行に素早く移動できます。

図3
図3: Oracle Data Window


Oracle PL/SQLエディタ

プロシージャ、ファンクション、パッケージを編集するには、Oracle Explorerで目的のアイテムを右クリックして、「 編集 」を選択します。 Oracle PL/SQLエディタが表示され(図4参照)、緊密に統合された開発環境が提供されます。 ストアド・プロシージャを作成するために、Visual Studio .NETから離れる必要はありません。 Oracle PL/SQLエディタ に組み込まれているMicrosoft Visual Studioの標準機能として、コードの読みやすさを高める構文の色分け、大規模で複雑なパッケージに含まれるストアド・プロシージャやストアド・ファンクションを非表示にする折りたたみ機能などがあります。 これらの機能を使用することで、作業中のプロシージャやファンクションに容易に集中できます。 また、SQL文やPL/SQL文を入力する際には、表や列のドロップダウンリストがポップアップ表示され、文を自動補完できます。

図4
図4: Oracle PL/SQLエディタ


PL/SQLコードをコンパイルするには、Oracle Explorerで目的のアイテムを右クリックし、「 コンパイル 」を選択します。 PL/SQLのコンパイル中にエラーが発生した場合は、Microsoft Visual Studio .NETのタスク・リストに出力されます。 エラー・テキストをクリックすると、エラーの発生したコード行にジャンプします。 状況依存ヘルプ・キーを押すと、問題のエラー・コードに関する 『Error Messages and Codes』 マニュアルが開かれます。

完成したストアド・プロシージャおよびストアド・ファンクションをテストするには、Oracle Explorerで目的のアイテムを右クリックして、「 実行 」を選択します。 ダイアログ・ボックスが表示されたら、ストアド・プロシージャまたはストアド・ファンクションの実行に必要な入力パラメータを入力できます。 ダイアログ・ボックスの「 OK 」をクリックすると、コードが実行されます。 ストアド・プロシージャの実行結果、すなわち出力パラメータは、最終ウィンドウ(図5参照)に表示されます。REF CURSORなどの複雑な出力型はリンクとして表示されます。リンクをクリックすると、複雑なデータがグリッド形式で表示されます。

図5
図5: PL/SQLのテスト


自動コード生成

Oracle Explorerからアプリケーションのフォームにスキーマ・オブジェクトをドラッグ・アンド・ドロップすると、そのスキーマ・オブジェクトに対する SELECT UPDATE INSERT 、および DELETE の各操作に対応するコードが自動生成されます。 自動生成されるコードでは、Oracle Data Provider for .NET(ODP.NET)で提供されている OracleDataAdapter クラスが使用されます。 このクラスは、ADO DataAdapter クラスの派生クラスなので、 Oracle以外のデータベースであっても、 DataAdapter クラスを使用した経験のある開発者であれば、簡単に理解できます。 次に、 DataAdapter クラスを使用して、アプリケーションのフォーム上のUI要素( DataGrid 要素など)をOracle Databaseに接続します。コードの追加は最小限で済みます。

Oracleの表またはビューに基づく、型指定されたデータセットまたは型指定されていないデータセットに対応するコードも生成できます。 コードを生成するには、フォーム上のOracleDataAdapterアイコンを右クリックして、「 DataSetの生成 」を選択します。 次に、このデータセットをデータソースとしてUI要素にバインドするか、Microsoft Visual Studio .NETを介して別の標準の方法(Microsoft Visual Studio XMLスキーマ・デザイナなど)で使用します。

Oracle Database Extensions for .NET: 最初の.NETストアド・ファンクション

オラクルは、Windows版Oracle Database 10g Release 2で、Oracle Database Extensions for .NETの提供を開始しました。 このデータベース・オプションを使用すると、.NETマネージド言語で記述されているストアド・プロシージャおよびストアド・ファンクションをWindows上のOracle Databaseに配置できます。 このデータベース・オプションは、デフォルトではインストールされません。このオプションを有効にするには、データベースのカスタム・インストールをおこなう必要があります (.NETストアド・プロシージャを実行するためのデータベースの設定の詳細については、 『Oracle Database Extensions for .NET 開発者ガイド』 を参照してください)。 このデータベース・オプションはWindowsプラットフォーム上でのみ使用できます。プラットフォームに依存しないソリューションを必要とする場合は、従来どおり、PL/SQLとJavaを使用する必要があります。

Oracle Developer Tools for Visual Studio .NETの詳細 (US OTN、英語)

ダウンロード
Oracle Developer Tools for Visual Studio .NET
Oracle Database 10g for Windows

参照
Oracle Database Extensions for .NET開発者ガイド



次の手順にしたがって、最初の.NETストアド・ファンクションを作成および配置してください。

手順1: ファイル 」→「 新規作成 」→「 プロジェクト 」→「 C#プロジェクト 」→「 Oracle Project 」を選択して、Oracleプロジェクトを開きます。
手順2: リスト1に掲載したストアド・ファンクション getDepartmentno のコードを入力します。 このコードのデータ・アクセスはODP.NETによって提供されている点に注意してください。 このストアド・ファンクションのコードでは、接続文字列属性 context connection=true を使用しています。これが、クライアント側アプリケーションで使用されるコードとの唯一の違いです。 この属性は、新しい接続を作成する代わりに、このストアド・ファンクションのコール元に関連付けられた接続を使用するようODP.NETに指示します。
手順3: コードをビルドしてアセンブリを生成します。 「 ビルド 」→「 ソリューションのビルド 」を選択すると、ビルドが開始され、アセンブリが生成されます。この手順は、通常のMicrosoft Visual Studio .NETアセンブリを生成するときと同じです。
手順4:ビルド 」メニューで、「 ソリューションの配置 」を選択します。 .NET配置ウィザードが開始されます。
手順5: .NET配置ウィザードで「 新規接続 」をクリックし、 SYSDBA 資格情報を使用して接続を確立します。 .NETストアド・プロシージャを配置するには、 SYSDBA 資格情報が必要です。
手順6: 次のウィザード画面で、「 アセンブリのコピーおよびストアド・プロシージャの生成 」を選択します。
手順7: 次の画面で、アセンブリ名とライブラリ名を入力するように要求されたら、デフォルト値をそのまま受け入れます。
手順8: 次の画面で、依存アセンブリと配置場所についても、デフォルト値を受け入れます(デフォルトの配置場所はORACLE_HOME\BIN\CLRです)。
手順9: データ型マッピング画面(図6参照)で、ツリー制御を展開し、 getDepartmentno の横のチェックボックスをオンにします。 配置先として SCOTT スキーマを選択します。 .NETからOracleへのデフォルトのパラメータ・データ型マッピングを受け入れます。 セキュリティ・レベルを選択します。 このファンクションのセキュリティ・レベルとして、 安全 (データベースへのアクセスだけを許可する)、 外部 (ファイルおよびネットワーク・リソースへのアクセスも許可する)、 危険 (アクセスを制限しない)のいずれかを設定します。

図6
図6: Oracle配置ウィザードのデータ型マッピング画面


手順10: 終了 」をクリックすると、アセンブリが配置され、ストアド・ファンクションがOracle Databaseに登録されます。 これで、Oracle ExplorerのFunctionsノードに GETDEPARTMENTNO ファンクションが追加されます。
手順11: ストアド・ファンクションをテストするには、Oracle Explorerでそのファンクションを右クリックして、「 実行 」を選択します。 入力パラメータとして有効な EMPNO 値(例:"7369")を指定して、出力を確認します。

コード・リスト1: getDepartmentnoストアド・ファンクション

using System;
using System.Data;
using Oracle.DataAccess.Client;

namespace Project1
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1
    {
        public static int getDepartmentno(int empno)
        {
            int deptno = 0;

            // Get a connection to the db
            OracleConnection con = new OracleConnection();
            con.ConnectionString = "context connection=true";
            con.Open();

            // Create and execute a command
            OracleCommand cmd = con.CreateCommand();
            cmd.CommandText = "select deptno from emp where empno = :1";
            cmd.Parameters.Add(":1", OracleDbType.Int32, empno, 
            ParameterDirection.Input);
            OracleDataReader rdr = cmd.ExecuteReader();
            while(rdr.Read())
                deptno = rdr.GetInt32(0);
            rdr.Close();
            cmd.Dispose();

            // Return the employee's department number
            return deptno;
        }
   }
 }


まとめ

この記事では、Oracle Databaseを使用した.NET開発を迅速かつ容易にするOracle Developer Tools for Visual Studio .NETのおもな機能を紹介しました。 また、.NETストアド・ファンクションを開発し、Microsoft Windows版Oracle Database 10g Release 2に配置する手順を示しました。


Christian Shay christian.shay@oracle.com )は、オラクルのprincipal product managerです。