SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Oracle Tips

Visual Studio 2005からOracleを操作する

Oracle Developer Tools for Visual Studio(ODT)の利用


  • X ポスト
  • このエントリーをはてなブックマークに追加

Visual Studio 2005からPL/SQLプロシージャの開発

 ODTの特長として、PL/SQLの開発・デバッグが行えることが挙げられます。[Oracleエクスプローラ]より、[プロシージャ]を右クリックし、[新規PL/SQLプロシージャ]を選択すると、PL/SQLの新規作成ウィンドウが表示されるので、以下の情報を入力してください。

項目 説明
スキーマ名 SCOTT
プロシージャ名 GETEMPNAME
認証識別子 DEFINER
パラメータ 名前 PARAEMPNO, 方向 IN, データ型 NUMBER
名前 PARAENAME, 方向 OUT, データ型 VARCHAR2
 

 PL/SQLコードエディタが開くので、SCOTTユーザーの「emp」テーブルを参照する簡単なPL/SQLプロシージャを次のように記述します。

EMP表を参照するストアドプロシージャ
PROCEDURE "SCOTT"."GETEMPNAME" (
  "PARAMEMPNO" IN NUMBER,
  "PARAMENAME" OUT NVARCHAR2) IS
BEGIN
    SELECT ename INTO paramename FROM emp WHERE empno=PARAMEMPNO;
END "GETEMPNAME";

 PL/SQLのコードエディタは、インテリセンスが有効になっているので、次のようにテーブルを指定すると、そのテーブルのフィールド一覧が表示されます。

 

 コードミスが発生した場合は、「エラー一覧」としてメッセージが表示され、ダブルクリックすると、PL/SQLコードの該当行にカーソルが移動します。

 

 次に作成したPL/SQLプロシージャをデバッグしてみましょう。まず「SCOTT」ユーザーにデバッグを行うための権限を与えます。管理ユーザーである「SYSTEM」ユーザーでOracleに接続し、以下のSQLを実行してデバッグ権限を「SCOTT」ユーザーに付与します。

SCOTTユーザーにデバッグ権限を与えるSQL
C:\>sqlplus system/*******[SYSTEMユーザーパスワード]
SQL> GRANT DEBUG CONNECT SESSION TO scott;
権限付与が成功しました。
SQL> GRANT DEBUG ANY PROCEDURE TO scott;
権限付与が成功しました。
SQL>

 「SCOTT」ユーザーをOracleエクスプローラから選択し、[プロシージャ]-[GETEMPNAME]をダブルクリックするとPL/SQLエディターが開くので、任意の行でブレークポイントを設定します。

 

 [Oracleエクスプローラ]から[プロシージャ]-[GETEMPNAME]を選択し、右クリックして[コンパイル・デバッグ]を選択します。[コンパイル・デバッグ]が完了したら、[デバッグの実行]を選択します。PL/SQLストアド・プロシージャを実行するためのパラメータ入力のウィンドウが表示されるので、任意の値(ここでは、7369)を入力し[OK]ボタンをクリックします。

 

 先ほど設定したブレークポイントの箇所でコード実行が一時停止するので、後はVS 2005のデバッグ機能を利用して変数のウォッチやステップ実行をしながら、PL/SQLのプロシージャのデバッグができます。

 

 以上のようにPL/SQLで記述されたプロシージャ、ファンクションを単独でデバッグすることも可能ですが、VS 2005で開発された.NETアプリケーションとシームレスに連携してデバッグすることも可能です。では、実際にテストしてみましょう。VS 2005から新規にWindowsアプリケーションを作成し、フォームにボタンを一つ貼り付けます。

 

 次に、.NETからOracleへ接続するためのデータ・プロバイダであるODP.NETを、参照設定に追加します。ODP.NETの参照設定は、VS 2005のメニューより[プロジェクト]-[参照の追加]を選択し、.NETタブより[Oracle.DatAccess]を選択して行います。

 

 フォームに貼り付けたボタンのClickイベントで先ほど作成したプロシージャを呼び出すコードを、次のように記述します。

PL/SQLストアドプロシージャをコールするサンプル
Imports oracle.DataAccess.Client
Imports oracle.DataAccess.Types

Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles Button1.Click
    'データベース接続
    Dim conn As New OracleConnection( _
      "User Id=Scott;Password=Tiger;Data Source=orcl10gr2")
    conn.Open()

    'ストアドプロシージャの読込
    Dim cmd As New OracleCommand("GETEMPNAME", conn)
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.Add("PARAEMPNO", OracleDbType.Int32 _
                                  , ParameterDirection.Input)
    cmd.Parameters("PARAEMPNO").Value = 7369
    cmd.Parameters.Add("PARAMENAME", OracleDbType.Varchar2 _
                               , 10, "", ParameterDirection.Output)
    cmd.ExecuteNonQuery()

    'Close
    conn.Close()
    conn.Dispose()

  End Sub

End Class
PL/SQLストアドプロシージャをコールするサンプル
private void button1_Click(object sender, EventArgs e)
{
  // データベース接続
  OracleConnection conn = new OracleConnection(
    "User Id=Scott;Password=Tiger;Data Source=orcl10gr2");
  conn.Open();

  // ストアドプロシージャの読込
  OracleCommand cmd = new OracleCommand("GETEMPNAME",conn);
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.Parameters.Add("PARAEMPNO", OracleDbType.Int32 ,
    ParameterDirection.Input);
  cmd.Parameters["PARAEMPNO"].Value = 7369;
  cmd.Parameters.Add("PARAMENAME", OracleDbType.Varchar2 ,
    10, "", ParameterDirection.Output);
  cmd.ExecuteNonQuery();

  // Close
  conn.Close();
  conn.Dispose();
}

 次にVS 2005メニューの[ツール]-[Oracleアプリケーションのデバッグ]を選択します。

 

 VS 2005メニューから[ツール]-[オプション]を選択し、オプションウィンドウを表示します。一覧から[Oracle Developer Tools]を選択し、[SCOTT.データソース名(SCOTT.orcl10gr2)]のチェックをオンにします。

 

 オプションウィンドウの[OK]ボタンをクリックし、アプリケーションを実行します。[イミディエイト ウィンドウ]にはPL/SQLデバッガを起動するメッセージが表示されます。

 

 フォーム上のボタンをクリックすると、PL/SQLストアド・プロシージャが実行され、ブレークポイントを設定した箇所で停止するのが確認できます。

 

 後はVS 2005のデバッグ機能である、ステップ実行や変数のウォッチ機能を利用して、PL/SQLのコードをデバッグします。

おわりに

 ODTではPL/SQLのデバッグなど、Oracleユーザーにとってうれしい機能が充実しています。VS 2005一つ立ち上げておくだけで、Oracle対応アプリケーション開発のほどんどの操作が行えます。今後、ODTの機能を詳細に紹介していきますので、どうぞご期待ください!

参考資料

  1. Oracle Technology Network 『.NET Developer Center

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Oracle Tips連載記事一覧

もっと読む

この記事の著者

日本オラクル 大田(オオタ ヒロシ)

日本オラクル株式会社 Oracle Directテクニカルサービス部所属。開発者の視点から、Oracle Databaseの機能を最大限に活かすための手法を日々研究しながら、プリセールス活動やオンラインセミナー等による情報発信を行う。現在はWindows Server上でのOracle製品活用を推進している。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1201 2008/08/22 19:33

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング