IntelliJ IDEA 2024.1 ヘルプ

Oracle PL/SQL コードのデバッグ

データベースツールと SQL プラグインを有効にする

この機能は、IntelliJ IDEA にバンドルされており、デフォルトで有効になっているデータベースツールと SQL プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。

  1. Ctrl+Alt+S を押して設定を開き、プラグインを選択します。

  2. インストール済みタブを開き、データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。

デバッガーは、DBMS_DEBUG パッケージの API を使用する Oracle プローブに基づいており、Oracle サーバー 9.0 以降で動作するはずです。

Oracle では、次のプログラムユニット(PL/SQL プログラム)をデバッグできます: 匿名ブロック、パッケージ、プロシージャ、関数、トリガー。

ステップ 1. PL/SQL オブジェクトを作成する

  1. Oracle データソースを右クリックし、新規 | クエリコンソールを選択します。

    または、クエリコンソールリスト (Ctrl+Shift+F10) から既存のコンソールの 1 つを選択します。

  2. コンソールにコードを入力または貼り付けます。

  3. 実行ボタン the Execute button をクリックするか、Ctrl+Enter を押して手順コードを実行します。

    その結果、作成されたオブジェクトがデータベースツールウィンドウ ( 表示 | ツールウィンドウ | データベース ) に表示されます。

Create a PL/SQL object

プロシージャのコードスニペット:

CREATE PROCEDURE simpleprocedure (inval NUMBER) IS tmpvar NUMBER; tmpvar2 NUMBER; total NUMBER; BEGIN tmpvar := 0; tmpvar2 := 0; total := 0; FOR lcv IN 1 .. inval LOOP total := 2 * total + 1 - tmpvar2; tmpvar2 := tmpvar; tmpvar := total; END LOOP; DBMS_OUTPUT.put_line ('TOTAL IS: ' || total); END simpleprocedure; /

ステップ 2. デバッグオプションを使用して PL/SQL オブジェクトをコンパイルする

PL/SQL コードのデバッグを有効にするには、DEBUG オプションを使用してコンパイルする必要があります。コンパイルのプロセスにより、PL/SQL コードが Pro * C に変換され、Pro * C が Oracle 共有ライブラリにコンパイルされます。コンパイルは、Oracle インタープリターがコードをより高速に処理できます。

  1. デバッグする PL/SQL オブジェクトを右クリックし、SQL スクリプト | 再コンパイルを選択します。

  2. 再コンパイルダイアログで、DEBUG オプションを使用を選択します。

  3. OK をクリックします。

    Compile code for debugging

ステップ 3. PL/SQL プログラムユニットのデバッグ

無名ブロックを介した PL/SQL プロシージャおよびファンクションのデバッグ

PL/SQL プログラムユニットは、コードをブロックに編成します。名前のないブロックは、匿名ブロックです。匿名ブロックは、Oracle データベースには保存されません。デバッグプロセスでは、匿名ブロックを使用してパラメーターの値を渡します。

プロシージャ、パッケージ、関数をデバッグするには、必要なルーチンを呼び出す匿名ブロックを作成します。

  1. データベースツールウィンドウ ( 表示 | ツールウィンドウ | データベース ) で、デバッグ用に作成およびコンパイルした PL/SQL オブジェクトをダブルクリックします。

  2. プロシージャの実行ボタン the Run Procedure button をクリックします。セッションが選択されていない場合は、リストからセッションを選択します。セッション管理の詳細については、「セッション」を参照してください。

  3. ルーチンの実行ダイアログから

    匿名ブロックをコピーしてコンソールに貼り付けます

    .

  4. 匿名ブロックと、この匿名ブロックで参照される PL/SQL プログラムオブジェクトにブレークポイントを配置します。

  5. (オプション)パラメーター値を変更します。

  6. デバッグをクリックします。

プロシージャのコードスニペット:

CREATE PROCEDURE simpleprocedure (inval NUMBER) IS tmpvar NUMBER; tmpvar2 NUMBER; total NUMBER; BEGIN tmpvar := 0; tmpvar2 := 0; total := 0; FOR lcv IN 1 .. inval LOOP total := 2 * total + 1 - tmpvar2; tmpvar2 := tmpvar; tmpvar := total; END LOOP; DBMS_OUTPUT.put_line ('TOTAL IS: ' || total); END simpleprocedure; /

無名ブロックを介した PL/SQL パッケージのデバッグ

パッケージは、論理的に関連する PL/SQL タイプ、アイテムおよびサブプログラムをグループ化するスキーマオブジェクトです。

プロシージャや関数と同様に、パッケージをデバッグするには、必要なルーチンを呼び出す匿名ブロックを作成します。

  1. データベースツールウィンドウ ( 表示 | ツールウィンドウ | データベース ) で、作成してデバッグ用にコンパイルしたパッケージをダブルクリックします。

  2. パッケージにブレークポイントを配置します。

  3. Oracle データソースを右クリックし、新規 | クエリコンソールを選択します。

    または、クエリコンソールリスト (Ctrl+Shift+F10) から既存のコンソールの 1 つを選択します。

  4. Oracle コンソールで、プロシージャをトリガーする匿名ブロックを作成します。

  5. デバッグをクリックします。

パッケージのコードスニペット:

CREATE PACKAGE PKG_DBGD AS FUNCTION tst_1(I IN INTEGER) RETURN INTEGER; FUNCTION tst_2(I IN INTEGER) RETURN INTEGER; END PKG_DBGD; / CREATE PACKAGE BODY PKG_DBGD AS FUNCTION tst_1(I IN INTEGER) RETURN INTEGER IS BEGIN IF I BETWEEN 5 AND 10 THEN RETURN 2 * I; END IF; IF I BETWEEN 0 AND 4 THEN RETURN tst_2(3 + I); END IF; IF I BETWEEN 6 AND 10 THEN RETURN tst_2(I - 2); END IF; RETURN I; END TST_1; FUNCTION tst_2(I IN INTEGER) RETURN INTEGER IS BEGIN IF I BETWEEN 6 AND 8 THEN RETURN tst_1(I - 1); END IF; IF I BETWEEN 1 AND 5 THEN RETURN I * 2; END IF; RETURN I - 1; END TST_2; END PKG_DBGD; /

匿名ブロックのコードスニペット:

DECLARE V_RESULT INTEGER; BEGIN V_RESULT := PKG_DBGD.tst_1(4); END;

クエリを介した PL/SQL トリガーのデバッグ

トリガーは、INSERT、UPDATE、DELETE クエリを発行したときに DBMS によって自動的に呼び出される PL/SQL プログラム単位です。トリガーはテーブルに関連付けられ、データ行を挿入、更新、削除する前または後に呼び出されます。テーブルには複数のトリガーを含めることができます。

トリガーをデバッグするには、INSERT、UPDATE、DELETE クエリをテーブルまたはビューに書き込みます。

  1. Oracle データソースを右クリックし、新規 | クエリコンソールを選択します。

    または、クエリコンソールリスト (Ctrl+Shift+F10) から既存のコンソールの 1 つを選択します。

  2. コンソールにクエリを入力します。

  3. トリガーにブレークポイントを配置します。

  4. デバッグをクリックします。

トリガーのコードスニペット:

create table Table_with_Triggers ( Code char(1), Name varchar(26) ) / create trigger Table_with_Triggers_Trg_1 before update on Table_with_Triggers declare x positive := 42; begin dbms_output.put_line('trigger before update statement'); end; / create trigger Table_with_Triggers_Trg_2 before update on Table_with_Triggers for each row begin dbms_output.put_line('trigger before update row '||:old.Code); end; / create trigger Table_with_Triggers_Trg_3 after update on Table_with_Triggers for each row begin dbms_output.put_line('trigger after update row '||:old.Code); end; / create trigger Table_with_Triggers_Trg_4 after update on Table_with_Triggers begin dbms_output.put_line('trigger after update statement'); end; / insert into Table_with_Triggers values ('A', 'Altai'); insert into Table_with_Triggers values ('B', 'Barnaul'); commit; alter trigger Table_with_Triggers_Trg_1 compile debug; alter trigger Table_with_Triggers_Trg_2 compile debug; alter trigger Table_with_Triggers_Trg_3 compile debug; alter trigger Table_with_Triggers_Trg_4 compile debug; begin dbms_output.enable(4000); end; / begin update Table_with_Triggers set Name = Name || '+'; end; / update Table_with_Triggers set Name = Name || '+' / rollback / select * from user_source /

ステップモード

PL/SQL コードをデバッグするとき、優雅なおよびネイティブの 2 つのステップモードから選択できます。

優雅なモードでは、デバッグするセッション(ターゲットセッション)を一時停止し、ブレークポイントを設定および削除できます。有効なブレークポイントが設定されていない場合、デバッガーは行単位でコードをステップ実行します。

ネイティブモードでは、デバッガーは Oracle ネイティブデバッグコマンドを使用します。ターゲットセッションを一時停止したり、ブレークポイントを管理したりすることはできませんが、CPU を集中的に使用する操作(多くの計算とループを含む操作)でパフォーマンスが向上する可能性があります。Oracle デバッグコマンドの詳細については、Oracle の公式ドキュメントを参照してください(英語)。有効なブレークポイントが設定されていない場合、デバッガーはルーチン全体を実行します。

ステップモードを変更する

  1. 設定を開き(Ctrl+Alt+S)、ビルド、実行、デプロイ | デバッガー | ステップに移動します。

  2. ステップモードリストから、必要なステップモードを選択します。

デバッグ可能なコードの先頭で一時停止

デバッグ可能なコードの最初でデバッガーを一時停止させることができます。デバッガーが一時停止する場所は自動的に検出されます。宣言セクションで変数値を割り当てると、デバッガーは変数宣言で一時停止します。変数に値が割り当てられていない場合、デバッガーは宣言セクションをスキップし、実行セクションの BEGIN キーワードで一時停止します。

  1. 設定を開き(Ctrl+Alt+S)、ビルド、実行、デプロイ | デバッガー | ステップに移動します。

  2. 開始時に一時停止を選択します。

Pause at the beginning of debuggable code

関連ページ:

セッション

データベースツールと SQL プラグインを有効にするこの機能は、IntelliJ IDEA にバンドルされており、デフォルトで有効になっているデータベースツールと SQL プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。を押して設定を開き、を選択します。インストール済みタブを開き、データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。IntelliJ IDEA では、データベース...

SQL ファイルの実行

データベースツールと SQL プラグインを有効にするこの機能は、IntelliJ IDEA にバンドルされており、デフォルトで有効になっているデータベースツールと SQL プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。を押して設定を開き、を選択します。インストール済みタブを開き、データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。実行構成を使用して、選択したデータベースまたは...

データエディターとビューアー

データベースツールと SQL プラグインを有効にするこの機能は、IntelliJ IDEA にバンドルされており、デフォルトで有効になっているデータベースツールと SQL プラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。を押して設定を開き、を選択します。インストール済みタブを開き、データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。概要:データエディターとビューアー、またはデ...