SAK 図書館
Oracle PL/SQL 編16 - デバッグメッセージ表示、dbms_output.put_line
■DBMS_OUTPUT
・DBMS_OUTPUT パッケージは、SQL*Plus にメッセージを表示します。
PL/SQL プロックやストアドのデバッグに使用すると便利です。
但し、処理経過をリアルタイムに監視するようなメッセージ出力には使用で
きません。出力バッファの表示は、PL/SQL が終了した段階でまとめて行わ
れます。途中で即時表示する命令はありません。
■enable
・put_line 等を有効にします。(既定値は enable です。)
SQL*Plus で set serveroutput on コマンドを実行していない場合、バッフ
ァには出力されますが、表示はされません。
dbms_output.enable(size);
|_ バッファサイズ
省略値は 20000
最小値は 2000
最大値は 1000000
(in integer)
■disable
・put_line 等を無効にします。
SQL*Plus で set serveroutput on コマンドが実行されていても、バッフ
ァに出力されません。
dbms_output.disable;
■put
・メッセージを出力します。(改行コードなし)
dbms_output.put(msg);
|_ メッセージ
(in number、in varchar2、in date)
■new_line
・改行コードを出力します。
dbms_output.new_line;
■put_line
・メッセージを 1 行出力します。
dbms_output.put_line(msg);
|_ メッセージ
(in number、in varchar2、in date)
■get_line
・メッセージを 1 行取り出します。
dbms_output.get_line(data, stat);
| |_ ステータス
| 0 正常
| 1 行なし
| (out integer)
|_ メッセージ
(out varchar2)
■get_lines
・メッセージを複数行取り出します。
dbms_output.get_lines(data, line);
| |_ 取得行数
| (in out integer)
|_ メッセージ
(out chararr)
■エラー内容表示
set serveroutput on;
declare
s varchar2(40) := 'あいうえお';
i number;
begin
-- 意図的エラー代入
i := s;
exception
when OTHERS then
dbms_output.put_line('-- デバッグメッセージ --');
dbms_output.put_line('SQL コード = ' || sqlcode);
dbms_output.put_line('エラー内容 = ' || sqlerrm(sqlcode));
end;
/
-- デバッグメッセージ --
SQL コード = -6502
エラー内容 = ORA-06502: PL/SQL: 数値または値のエラー:
文字から数値への変換エラー。が発生しました
■処理経過チェック表示
set serveroutput on;
declare
s varchar2(40) := 'あいうえお';
i number;
begin
-- 処理開始
dbms_output.put_line('-- スタート --');
-- 意図的エラー代入
dbms_output.put_line('-- 代入開始 --');
i := s;
dbms_output.put_line('-- 代入終了 --');
-- 処理終了
dbms_output.put_line('-- 正常終了 --');
end;
/
-- スタート --
-- 代入開始 --
declare
*
1行でエラーが発生しました。
ORA-06502: PL/SQL: 数値または値のエラー:
文字から数値への変換エラー。が発生しました
ORA-06512: 行9
■Oracle PL/SQL 編資料
■SQL 基礎実地編資料
■SQL 基礎編資料
■SQL チューニング編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料