Oracle SQL Developerのデバッグの方法

OracleのSQL DeveloperのPLSQLのデバッグの方法です。

確認環境
・SQL Developer 19.1.0.094
・Oracle Express Edition 11g Release 2

目次

デバッグの方法 デバッグの対象のプロシージャ
  デバッグの手順
  ステップ実行を使用する

SQL Developerのダウンロード場所

SQL Developerは、以下でダウンロードできます。
https://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html

デバッグの対象のプロシージャ

以下のプロシージャをデバッグします。

create or replace procedure TEST1
(
  id1      IN   number,
  name1    OUT  varchar2,
  romaji1  OUT  varchar2
)
IS
  	CURSOR cur1 IS
		SELECT name,romaji FROM SYAIN
		WHERE id = id1;

	syain_rec cur1%ROWTYPE;

BEGIN
  OPEN cur1;
    FETCH cur1 INTO syain_rec;
  CLOSE cur1;

  name1   := syain_rec.name;
  romaji1 := syain_rec.romaji;
END;

3行目は、入力項目のIDがあります。
4,5行目は、出力項目です。
9,10行目のselect文で条件に一致した項目を取得します。

デバッグの手順

1.SQL Developerを起動して対象のプロシージャを開き、デバッグの赤いアイコンをクリックします。このプロシージャは、入力(IN)の項目があります(オレンジ枠の箇所)。

 

2.ダイアログの右上にIDの値を入力できる欄があります。
nameとromajiは出力項目なのでN/Aになっていて入力できません。
OKを押すとプロシージャが実行されます。

 

3.権限がない場合は、画面下のログに以下のメッセージが表示されます。

データベースXE-HRに接続中です。
PL/SQLの実行中: ALTER SESSION SET PLSQL_DEBUG=TRUE
PL/SQLの実行中: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '127.0.0.1', '59613' )
ORA-01031: 権限が不足しています。
ORA-06512: "SYS.DBMS_DEBUG_JDWP", 行68
ORA-06512: 行1
このセッションでは、DEBUG CONNECT SESSIONおよびDEBUG ANY PROCEDUREユーザー権限が必要です。
プロセスが終了しました。
データベースXE-HRから切断中です。

7行目は、「このセッションでは、DEBUG CONNECT SESSIONおよびDEBUG ANY PROCEDUREユーザー権限が必要です。」と表示されています。

表示された権限を付与します。

GRANT DEBUG CONNECT SESSION TO hr;

GRANT DEBUG ANY PROCEDURE TO hr;

hrユーザーにDEBUG CONNECT SESSIONとDEBUG ANY PROCEDUREの権限を付与しています。

 

4.実行が成功するとログは以下のように表示されます。

 

5.プロシージャから出力された値は、「出力変数」タブの変数の箇所をクリックすると値に表示されます。

出力する値が複数のときは、別の変数の箇所をクリックすると値に表示されます。

ステップ実行を使用する

ステップ実行は、ブレークポイントを設定して手動で動かしながら確認できます。

1.対象のプロシージャを右クリックし、「デバッグ用にコンパイル」をクリックします。

 

2.プロシージャのコードの左側で左クリックすると赤い丸いアイコンが表示されます。
ブレークポイント(処理が中断する箇所)になります。

 

3.デバッグのアイコンをクリックして処理を動かすとブレークポイントの箇所で止まります。
赤枠の箇所がステップ実行のボタンです。
1行ずつ進めることができます。

関連の記事

Oracle PL/SQLのストアドプロシージャのサンプル

△上に戻る