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行ずつ進めることができます。
関連の記事