SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Oracle Tips

ASP.NETからPL/SQLをデバッグする

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

IISを使用したデバッグ

 IISを使用したデバッグでは、「Oracleアプリケーションのデバッグ」は使用せず以下のような手順となります。

  1. 環境変数の設定
  2. ブレークポイントの設定
  3. デバッグ開始
  4. 接続前にOracle外部アプリケーション・デバッガを起動

 VS2005で新しいWebサイトを作成し、場所に「HTTP」を選択します。

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

 「Default.aspx」にツールボックスからテキストボックスを2つとボタンを1つ配置します。

 IISが正常に動作していることを確認するため、この時点で一度デバッグ実行ておきます。デバッグ実行に関する警告が表示された場合は[OK]をクリックします。

 デバッグを行うため、環境変数を設定する必要があります。今回は以下のようなコードで環境変数を設定します(改行なしの一行で記述してください)。

以下のコードを記述
Environment.SetEnvironmentVariable("ORA_DEBUG_JDWP",
"host=machinename.domain.com;port=8888",
EnvironmentVariableTarget.Process)

 環境変数名は「ORA_DEBUG_JDWP」、値としてデバッグを行うマシンの8888番ポートを指定します。尚、マシン名は環境に応じて変更してください。ポート番号もここでは例として8888番を指定していますが通信可能な任意のポート番号であれば構いません。最後の引数でデバッグを行うスコープを指定します。ここではSQL Developer等、他のクライアントアプリケーションには影響を与えないようにするためプロセスレベルで設定しています。

 ボタンのClickイベントに、環境変数の設定を含んだコードを記述します。

環境変数を設定してストアドプロシージャをコール
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
Imports system.Data

Partial Class _Default
  Inherits System.Web.UI.Page

  Protected Sub Button1_Click(ByVal sender As Object, _
                              ByVal e As System.EventArgs) _
                                       Handles Button1.Click

    '環境変数を設定
    Environment.SetEnvironmentVariable("ORA_DEBUG_JDWP", _
                          "host=machinename.domain.com;port=8888", _
                          EnvironmentVariableTarget.Process)

    'データベース接続
    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 = CInt(TextBox1.Text)
    cmd.Parameters.Add("PARAMENAME", OracleDbType.Varchar2 _
                                  , 10, "", ParameterDirection.Output)
    'ストアドプロシージャの実行
    cmd.ExecuteNonQuery()
    TextBox2.Text = cmd.Parameters("PARAMENAME").Value.ToString

    'Close
    conn.Close()
    conn.Dispose()
  End Sub
End Class

 コネクションの確立前にブレークポイントを設定しておきます。

 OracleエクスプローラからGETEMPNAMEストアドプロシージャを開き、ブレークポイントを設定します。

 デバッグを開始するとコネクション確立前のブレークポイントで停止します。「ツール」メニューから「Oracle外部アプリケーション・デバッガ」を起動し、ポート番号に環境変数で指定したものと同じポートを指定します。

環境変数で指定したものと同じポートを指定する
環境変数で指定したものと同じポートを指定する

 デバッグを再開すると、PL/SQL側のブレークポイントで停止します。ウォッチ等の動作も使用可能です。

おわりに

 アプリケーションとデータベースを同時にデバッグすることにより、Webアプリケーション開発時の問題特定・解決がより容易となります。手順さえ覚えてしまえばそう難しいこともなく、さまざまな場面で活用することができます。この記事が皆様の開発生産性の向上に寄与できれば幸いです。

参考資料

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Oracle Tips連載記事一覧

もっと読む

この記事の著者

日本オラクル 三谷(ミタニ リョウタ)

日本オラクル株式会社クロスインダストリーSC部所属。Windows環境でのOracle製品、特に.NET+Oracleデータベース開発を更にメジャーにするべく日夜思索中。Oracle Directでは、「旧バージョンのオラクルを最新バージョンへ移行したいがどうしたらいいか分からない」、「パフォーマンスに問題...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1491 2007/07/19 14:00

イベント

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

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

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

メールバックナンバー