このチュートリアルでは、Visual StudioからOracle PL/SQLをデバッグする方法について説明します。
約30分
Oracle Developer Toolsに統合されたPL/SQLデバッガを使用すると、Visual Studioを終了せずに、.NETおよびOracleソリューションのエンド・ツー・エンド・デバッグを行うことができます。 プロシージャとファンクション(スタンドアロンおよびパッケージ済みの両方)、オブジェクト・メソッド、およびトリガーなどのPL/SQLコードを、Visual Studio環境内からC#またはVB.NETコードをデバッグする場合と同じ方法でデバッグできます。 Oracle Developer Toolsに統合されたPL/SQLデバッガでは、ブレーク・ポイントの設定、変数値の表示と変更、および呼出し履歴の検査などの従来のデバッグ機能を使用できます。
PL/SQLデバッガは、次の3つのモードのいずれかで使用します。
このチュートリアルでは、多層アプリケーション・デバッグ・モードを使用します。 このモードでは、開発者は、デバッグ・セッション中に.NETコードとPL/SQLコードを同時に操作できます。
このチュートリアルを始める前に以下のことを確認してください。
|
. |
Microsoft Visual Studio 2010をインストールしていること。 |
|---|---|
|
. |
Oracle Database 9.2以上またはOracle Database XEをインストールしていること。 |
|
. |
Oracle 11g Oracle Data Access Components with Oracle Developer Tools for Visual Studioバージョン11.2.0.1.2以上を、OTNから入手し、インストールしていること。 |
|
. |
これらのファイルを作業ディレクトリに解凍していること。 |
アプリケーションの作成を開始する前に、Visual Studioを開いて接続を作成します。 以下の手順を実行します。
|
. |
Visual Studioを開きます。 |
|---|---|
|
. |
「View」→「Server Explorer」を選択します。
|
|
. |
「Data Connections」を右クリックして、「Add Connection...」を選択します。
|
|
. |
Add Connectionダイアログ・ボックスで、適切なデータソース・プロバイダを選択します。 注: Data sourceが、Oracle Database(Oracle ODP.NET)にすでに設定されている場合は次の手順に移動するか、「Change」をクリックして、データソースおよびデータ・プロバイダを選択します。
Change Data Sourceダイアログ・ボックスで、Data sourceとして「Oracle Database」を選択し、Data providerとして「Oracle Data Provider for .NET」を選択します。 「OK」をクリックします。
|
|
. |
Data source nameドロップダウンで、使用しているOracle Databaseインスタンスの<SID>を選択します。 User nameとPasswordにHRと入力し、「Save password」をクリックして「Test Connection」をクリックします。
|
|
. |
テスト接続が成功しました。 「OK」をクリックします。
|
|
. |
「OK」をクリックします。
|
|
. |
HR接続が作成されました。 同様に、SYS接続も作成する必要があります。 「Data Connections」を右クリックして、「Add Connection...」を選択します。
|
|
. |
Data sourceはOracle Database(Oracle ODP.NET)に設定されている必要があります。 Data source nameドロップダウンで、使用しているOracle Databaseインスタンスの<SID>を選択します。 User nameにSYSと入力し、使用しているパスワードを入力して、「Save password」をクリックし、Roleとして「SYSDBA」を選択して「Test Connection」をクリックします。
|
|
. |
テスト接続が成功しました。 「OK」をクリックします。
|
|
. |
「OK」をクリックします。
|
|
. |
SYS接続が作成されました。 HR.ORCLとSYS.ORCLの両方を開いて、接続を作成します。
|
デバッガを使用するには、debug connect session権限およびdebug any procedure権限をHRユーザーに付与する必要があります。 以下の手順を実行します。
|
. |
Server Explorerパネルで、「SYS.ORCL」接続を右クリックして、「Query Window」を選択します。
|
|---|---|
|
. |
次のコマンドを入力して、「Execute」をクリックします。 GRANT debug any procedure, debug connect session TO hr;
注:Oracle Database Release 9.2を使用している場合は、grant debug any procedure to hr;を実行する必要があります。
|
|
. |
文が正常に実行されました。
|
このトピックでは、PL/SQLパッケージと、PL/SQL配列内の各数値が素数であるかどうかを判定するパッケージ本体を作成し、次にPL/SQLレコードを使用してJOBS表に新しい行を作成します。 以下の手順を実行します。
|
. |
Server Explorerパネルで、「HR.ORCL」を右クリックして、「Query Window」を選択します。
|
|---|---|
|
. |
作業ディレクトリにダウンロードしたファイルのうちのPLSQL_Debug_Package.txtファイルからコードをコピーし、Queryウィンドウに貼り付けて「Execute」をクリックします。 CREATE OR REPLACE PACKAGE "HR"."OBE" IS -- pl/sql record type for the jobs table -- pl/sql procedure to add new job to jobs table END "OBE";
|
|
. |
PL/SQLパッケージが正常に実行されました。
|
|
. |
作業ディレクトリにダウンロードしたファイルのうちのPLSQL_Debug_Packagebody.txtファイルからコードをコピーし、Queryウィンドウに貼り付けて「Execute」をクリックします。 CREATE OR REPLACE PACKAGE BODY "HR"."OBE" IS
|
|
. |
PL/SQLパッケージ本体が正常に実行されました。
|
|
. |
Server ExplorerのHR.ORCL接続で、「Packages」→「OBE」を開いて、作成されたオブジェクトの一覧を確認します。
|
|
. |
「OBE」パッケージを右クリックして、「Compile Debug」を選択します。 このアクションで、パッケージのデバッグが有効になります。
|
|
. |
パッケージが正常にコンパイルされました。 Outputウィンドウを閉じます。 次に、「Start Page」タブをクリックします。
|
新しいプロジェクトを作成する準備ができました。 以下の手順を実行します。
|
. |
Fileメニューから「New」→「Project」を選択します。
|
|---|---|
|
. |
Project Typesで「Visual C# : Windows」を選択し、Templatesで「Console Application」を選択します。Nameにplsqldebugobe1と入力し、Locationフィールドにファイルを保存するディレクトリを入力します(注:ディレクトリが存在しない場合は、作成されます)。「OK」をクリックします。
|
|
. |
プロジェクトが作成されました。 これで、参照を追加できます。
|
|
. |
「Project」→「Add Reference...」を選択します。
|
|
. |
参照のリストを下方向にスクロールし、「Oracle.DataAccess」を選択して「OK」をクリックします。
|
|
. |
作業ディレクトリにダウンロードしたファイルのうちのPLSQL_Debug_csharpcode.txtファイルからコードをコピーし、Visual Studio のProgram.csウィンドウに貼り付けます。 「Program.cs」タブを右クリックして、「Save Program.cs」を選択します。 using System;
|
デバッグ環境を使用するには、事前にいくつかのプロパティとオプションを設定する必要があります。 以下の手順を実行します。
|
. |
「Project」→「plsqldebugobe1 Properties...」を選択します。
|
|---|---|
|
. |
「Debug」を選択します。
|
|
. |
「Enable the Visual Studio hosting process」の選択を解除し、「plsqldebugobe1」タブを右クリックして「Save Selected Items」を選択します。
|
|
. |
「Tools」→「Options...」を選択します。
|
|
. |
「Show all settings」チェック・ボックスにチェックを入れます。 注: このチェック・ボックスが表示されない場合、すでにこのチェック・ボックスが選択されていることを意味します。 下方向にスクロールして、「Oracle Developer Tools」を開きます。 「PL/SQL Debugging」を選択します。 使用可能なデータベース接続で、「HR.ORCL」接続のチェック・ボックスをチェックします。 IPアドレスのドロップダウン・ボックスとTCP/IPポートの範囲が表示されることを確認してください。 PL/SQLのデバッグ中、Oracle Databaseは、IPアドレスとこの範囲にある任意のポートを使用してTCP/IP経由でVisual Studioに接続します。 使用するマシンに複数のIPアドレスが割り当てられている場合、Oracleデータベースから接続できるアドレスを選択するよう注意してください。 また、指定したポート範囲が、使用しているマシン上で開いているポートであること、およびファイアウォールでブロックされていないことを確認してください。
|
|
. |
「Tools」→「Oracle Application Debugging」を選択します。
再度、「Tools」メニューを選択すると、メニュー項目の前にチェック・マークが表示されます。
|
このトピックでは、実行中にデバッガを停止するために、C#コードとPL/SQLコードの両方にブレーク・ポイントを設定します。 以下の手順を実行します。
|
. |
「Program.cs」タブをクリックして、cmd.ExecuteNonQuery()文を見つけます。
|
|---|---|
|
. |
Program.csコードのcmd.Parameters.Add(p_out_values)文にブレーク・ポイントを作成します。 行の任意の場所をクリックし、右クリックして「Breakpoint」を選択します。次に、「Insert Breakpoint」を選択します。 あるいは、ブレーク・ポイントを設定する場所でコード・ウィンドウの一番左端にある灰色部分をクリックすることもできます。
|
|
. |
ブレーク・ポイント・インジケータが表示されます。
|
|
. |
パッケージを実行後、別のブレーク・ポイントを作成します。
|
|
. |
Server Explorerで、「DETERMINE_PRIMES」をダブルクリックしてコードを開きます。
|
|
. |
DETERMINE_PRIMESプロシージャで、BEGIN文の後の最初の文にブレーク・ポイントを作成します。
|
|
. |
プロシージャの一覧から「ADD_NEW_JOB」を選択します。
|
|
. |
BEGIN文の後の最初の文にブレーク・ポイントを作成します。
|
|
. |
「Program.cs」タブをクリックします。
|
このトピックでは、デバッガを使用してプログラムを実行します。 以下の手順を実行します。
|
. |
プログラムをデバッグする準備はできています。 「Debug」→「Start Debugging」を選択します。
|
|---|---|
|
. |
デバッガが最初のブレーク・ポイントで停止します。 変数とそれぞれの値を確認するには、ウィンドウの下部にある「Locals」タブをクリックします。 このブレーク・ポイントまでのコードを確認して、配列バインド・パラメータがどのように設定されているかを理解します。
|
|
. |
次の行に移動するには、「Step Into」アイコンをクリックします。
|
|
. |
PL/SQLプロシージャを実行する文に移動しました。 「Step Into」アイコンをクリックします。
|
|
. |
DETERMINE_PRIMESプロシージャの次のブレーク・ポイントに到達しました。 P_IN_VALUESは、長さが10の配列であるため、ループは10回実行されます。「Continue」アイコンを数回クリックして、Localsウィンドウ内の値が変化するのを確認します。
|
|
. |
LocalsウィンドウのP_IN_VALUES変数名の隣にある「+」アイコンをクリックして、入力配列の内容を表示します。 これは、C#アプリケーションからこのストアド・プロシージャに渡された値の配列です。 しばらくの間、コードを進めます。 P_OUT_VALUES配列を開いて、最終的にこのストアド・プロシージャによって返される値が入力される様子を確認することもできます。
|
|
. |
右下にあるウィンドウで、「Call Stack」タブをクリックします。 呼出し履歴を調べることで、プログラムの現在の実行ポイントまでのコード・パスを特定できます。
|
|
. |
このブレーク・ポイントを無効にして、プログラムを次のブレーク・ポイントまで進めます。 ブレーク・ポイントを右クリックして、「Disable Breakpoint」を選択します。 赤い円のブレーク・ポイント・アイコンを直接クリックして、ブレーク・ポイントを削除することもできます。
|
|
. |
「Continue」アイコンをクリックして、プログラムを次のブレーク・ポイントまで実行します。
|
|
. |
コードによってロジックが実行され、ユーザーに表示される内容が生成されます。 「Step Into」をさらに数回クリックします。
|
|
. |
もう一度、「Continue」アイコンをクリックして、次のブレーク・ポイントに進みます。
|
|
. |
ADD_NEW_JOBプロシージャのブレーク・ポイントに到達しました。
|
|
. |
JOBS_REC PL/SQLレコードのグローバル変数を表示する場合は、ウォッチを作成する必要があります。 「jobs_rec」を選択して右クリックし、「Add Watch」を選択します。 次に、ウィンドウ下部にある「Watch」タブを選択します。
|
|
. |
Watchウィンドウは、Visual Studioの組込みウィンドウで、特定のプログラム変数を調べることができます。 「jobs_rec」ウォッチを開きます。
|
|
. |
「Step Into」を4回クリックして、ウォッチに値が代入されることを確認します。 次に、「Continue」をクリックします。
|
|
. |
プログラムの実行が終了すると、結果が表示されます。
|
このチュートリアルで学習した内容は、以下のとおりです。
![]()
|
会社情報 |オラクルとサン | |