目次
PostgreSQL の PL/pgSQL で、 値を画面に表示する方法を紹介します。 (Oracle PL/SQL では、 DBMS_OUTPUT
を使います。)
試した環境
- クライアント: version 9.6
- サーバ: version 9.3
方法
RAISE
を使います。 RAISE
というとエラーを想起させるかもしれませんが、 エラーとは限りません。 エラーを発生させることもできます。
RAISE
では次の6種類のメッセージ・エラーを表示することができます(PostgreSQL 9.6.3)。
DEBUG
LOG
INFO
NOTICE
WARNING
EXCEPTION
EXCEPTION
のみがエラー発生で、 その他はレベルに応じたメッセージ出力です。
PostgreSQL では、 サーバ内でログに残す最低レベル、 クライアントに通知する最低レベル を設定することができ、 RAISE
の後のレベルとサーバの設定値によって、 ログへの記録・クライアントへの通知が変わってきます。 デフォルト(初期設定)では、 ログに残す最低レベルは WARNING
、 クライアントに通知する最低レベルは NOTICE
です。 各レベルの順はサーバログとクライアント通知では少し異なってきます。
1 2 3 4 5 6 7 8 9 10 |
DO $$ DECLARE BEGIN RAISE NOTICE '%', 1; RAISE LOG '%', 2; RAISE INFO '%', 3; RAISE NOTICE '%', 4; RAISE WARNING '%', 5; RAISE EXCEPTION '%', 6; END$$; |
1 2 3 4 5 |
NOTICE: 1 INFO: 3 NOTICE: 4 WARNING: 5 ERROR: 6 |
変数の値を表示する
変数の値を表示するには、 %
を使います。
1 |
RAISE NOTICE '% % %', VAR1, VAR2, VAR3; |
SELECT結果を表示する
1行1カラムのSELECT結果であれば、変数と同じように表示できます。
1 |
RAISE NOTICE '% %', (SELECT NOW()), (SELECT 1); |
SELECTステートメントは括弧で囲まないとエラーが出ます。