Oracle PL/SQL コードのデバッグ
データベースツールおよび SQL プラグインを有効化
この機能は、IntelliJ IDEA にデフォルトでバンドルされ有効になっている データベースツールおよび SQL プラグインに依存しています。 関連機能が利用できない場合は、プラグインを無効化していないことを確認してください。
Ctrl+Alt+S を押して設定を開き、 を選択します。
インストール済みタブを開き、 データベースツールおよび SQL プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。
デバッガーは、DBMS_DEBUG パッケージの API を使用する Oracle プローブに基づいており、Oracle サーバー 9.0 以降で動作するはずです。
Oracle では、次のプログラムユニット(PL/SQL プログラム)をデバッグできます: 匿名ブロック、パッケージ、プロシージャ、関数、トリガー。
ステップ 1. PL/SQL オブジェクトを作成する
Oracle データソースを右クリックし、 を選択します。
または、 クエリコンソール リスト(Ctrl+Shift+F10 )から既存の クエリコンソール の 1 つを選択します。
クエリコンソール にコードを入力または貼り付けます。
実行 ボタン
をクリックするか、 Ctrl+Enter を押して手順コードを実行します。
その結果、作成されたオブジェクトが データベース ツールウィンドウ () に表示されます。

プロシージャのコードスニペット:
ステップ 1. デバッグオプションを使用して PL/SQL オブジェクトをコンパイルする
PL/SQL コードのデバッグを有効にするには、 DEBUG オプションを使用してコンパイルする必要があります。 コンパイルのプロセスにより、PL/SQL コードが Pro * C に変換され、Pro * C が Oracle 共有ライブラリにコンパイルされます。 コンパイルは、Oracle インタープリターがコードをより高速に処理できます。
デバッグする PL/SQL オブジェクトを右クリックし、 を選択します。
再コンパイル ダイアログで、 DEBUG オプションを使用 を選択します。
OK をクリックします。

ステップ 2. PL/SQL プログラムユニットのデバッグ
無名ブロックを介した PL/SQL プロシージャおよびファンクションのデバッグ
PL/SQL プログラムユニットは、コードをブロックに編成します。 名前のないブロックは、匿名ブロックです。 匿名ブロックは、Oracle データベースには保存されません。 デバッグプロセスでは、匿名ブロックを使用してパラメーターの値を渡します。
プロシージャ、パッケージ、関数をデバッグするには、必要なルーチンを呼び出す匿名ブロックを作成します。
データベース ツールウィンドウで、デバッグ用に 作成および コンパイルしたPL/SQL オブジェクトをダブルクリックします。
プロシージャの実行 ボタン
をクリックします。 セッションが選択されていない場合は、リストからセッションを選択します。 セッションの管理に関する詳細は、 セッション を参照してください。
ルーチンの実行 ダイアログから、匿名ブロックをコピーして クエリコンソール に貼り付けます。
匿名ブロックと、この匿名ブロックで参照される PL/SQL プログラムオブジェクトにブレークポイントを配置します。
(オプション)パラメーター値を変更します。
デバッグ をクリックします。
プロシージャのコードスニペット:
無名ブロックを介した PL/SQL パッケージのデバッグ
パッケージは、論理的に関連する PL/SQL タイプ、アイテムおよびサブプログラムをグループ化するスキーマオブジェクトです。
プロシージャや関数と同様に、パッケージをデバッグするには、必要なルーチンを呼び出す匿名ブロックを作成します。
パッケージにブレークポイントを配置します。
Oracle データソースを右クリックし、 を選択します。
または、 クエリコンソール リスト(Ctrl+Shift+F10 )から既存の クエリコンソール の 1 つを選択します。
Oracle クエリコンソール で、プロシージャをトリガーする匿名ブロックを作成します。
デバッグ をクリックします。
パッケージのコードスニペット:
匿名ブロックのコードスニペット:
クエリを介した PL/SQL トリガーのデバッグ
トリガーは、 INSERT、 UPDATE、 DELETE クエリを発行したときに DBMS によって自動的に呼び出される PL/SQL プログラムユニットです。 トリガーはテーブルに関連付けられており、データ行を挿入、更新、削除する前または後に呼び出されます。 テーブルには複数のトリガーを設定できます。
トリガーをデバッグするには、テーブルまたはビューに INSERT、 UPDATE、 DELETE クエリを書き込みます。
Oracle データソースを右クリックし、 を選択します。
または、 クエリコンソール リスト(Ctrl+Shift+F10 )から既存の クエリコンソール の 1 つを選択します。
クエリコンソール にクエリを入力します。
トリガーにブレークポイントを配置します。
デバッグ をクリックします。
トリガーのコードスニペット:
ステップモード
PL/SQL コードをデバッグするとき、 正常 および ネイティブ の 2 つのステップモードから選択できます。
正常 モードでは、デバッグするセッション(ターゲットセッション)を一時停止し、ブレークポイントを設定および削除できます。 有効なブレークポイントが設定されていない場合、デバッガーは行単位でコードをステップ実行します。
ネイティブ モードでは、デバッガーは Oracle ネイティブデバッグコマンドを使用します。 ターゲットセッションを一時停止したり、ブレークポイントを管理したりすることはできませんが、CPU 負荷の高い操作(多くの計算やループを含む操作)ではパフォーマンスが向上する可能性があります。 Oracle デバッグコマンドの詳細については、 Oracle の公式ドキュメント(英語)を参照してください。 有効なブレークポイントが設定されていない場合、デバッガーはルーチン全体を実行します。
ステップモードを変更する
設定を開き(Ctrl+Alt+S)、 に移動します。
ステップモード リストから、必要なステップモードを選択します。
デバッグ可能なコードの先頭で一時停止
デバッグ可能なコードの最初でデバッガーを一時停止させることができます。 デバッガーが一時停止する場所は自動的に検出されます。 宣言セクションで変数値を割り当てると、デバッガーは変数宣言で一時停止します。 変数に値が割り当てられていない場合、デバッガーは宣言セクションをスキップし、実行セクションの BEGIN キーワードで一時停止します。
設定を開き(Ctrl+Alt+S)、 に移動します。
開始時に一時停止 を選択します。