PL/pgSQL/ターミナルにメッセージを表示する
の編集
Top
/
PL
/
pgSQL
/
ターミナルにメッセージを表示する
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
PostgreSQL/template0とtemplate1の違いについて
---- ⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]'' ---- * メッセージを表示させる・RAISE [#fd81846b] PL/pgSQLでプログラム開発しデバックする時など、メッセージを表示したくなると思います。~ RAISEを使用すればメッセージを表示することができます。~ 尚、例外であるEXCEPTIONについては、次の記事「[[エラー時のメッセージ出力>PL/pgSQL/エラー時のメッセージ出力]]」に詳細を記します。 #contents #htmlinsertpcsp(db-top.html,db-sp.html) * RAISEの構文 [#s8ba9776] RAISEの構文について以下に記します。~ 尚、詳細なRAISEの説明については、「[[PostgreSQLのサイトを参照してください。>https://www.postgresql.jp/document/9.2/html/plpgsql-errors-and-messages.html]]」。~ 基本的な構文は以下のようになります。 RAISE [ level ] 'メッセージ' 変数などを表示したい場合は、%を使用します。 RAISE [ level ] 'メッセージ %', foo 複数の変数の値を表示したい場合は、以下ようになります。 RAISE [ level ] 'メッセージ foo=% bar=%', foo,bar ** levelについて [#vdd59fbb] 上記の構文の[level]ですが、以下のレベルを指定することができます。~ levelは省略可能であり、省略した場合は、EXCEPTIONになります。 -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION 上述しましたが、EXCEPTIONについては、次の記事「[[エラー時のメッセージ出力>PL/pgSQL/エラー時のメッセージ出力]]」に詳細を記します。 * RAISEのサンプルプログラム [#r5be9c4d] 以下のようにEXCEPTIONを除いたサンプルを以下に記します。 #ref(raise_sample.sql) CREATE OR REPLACE FUNCTION raise_sample() RETURNS void AS $$ DECLARE foo text := 'foo'; bar int := 123; BEGIN RAISE DEBUG 'DEBUG RAISE MESSAGE'; RAISE LOG 'LOG RAISE MESSAGE'; RAISE INFO 'INFO RAISE MESSAGE %', foo; RAISE NOTICE 'NOTICE RAISE MESSAGE %,%', foo, bar; RAISE WARNING 'WARNING RAISE MESSAGE'; END $$ LANGUAGE plpgsql ; levelにDEBUG, LOG, INFO, NOTICE, WARNINGを指定してメッセージを出力するサンプルです。 * サンプルの実行 [#gfb31ec6] 以下のコマンドで上記のFUNCTIONを登録しました。~ みなさんの環境にあったオプションで登録してください。 $ psql -U sakura -f raise_sample.sql sakuradb CREATE FUNCTION 実行結果は以下の通りになります。 sakuradb=# select raise_sample(); INFO: INFO RAISE MESSAGE foo NOTICE: NOTICE RAISE MESSAGE foo,123 WARNING: WARNING RAISE MESSAGE raise_sample -------------- (1 row) 上記の通りターミナルにINFO, NOTICE, WARNINGが表示されているのが確認できますが、~ DEBUG, LOGが出力されていません。~ この出力は、一部ログに出力されています。 $ cat /var/log/postgresql/postgresql-9.3-main.log | grep 'RAISE MESSAGE' 2016-10-23 21:09:26 JST LOG: LOG RAISE MESSAGE 2016-10-23 21:09:26 JST WARNING: WARNING RAISE MESSAGE LOGとWARNINGが出力されているのが確認できます。~ (ディストリビューションやインストール方法によって出力されるログファイルのディレクトリが異なりますので、みなさんの環境にあった値に読み替えてください。) 上記の出力をみても、DEBUGが表示されていません。~ これは、postgresql.confのlog_min_messagesにdebug1を指定すればログに出力されます。~ 変更前 #log_min_messages = warning # values in order of decreasing detail: 変更後 log_min_messages = debug1 # values in order of decreasing detail: ログ確認 $ cat /var/log/postgresql/postgresql-9.3-main.log | grep 'RAISE MESSAGE' <省略> 2016-10-23 21:19:07 JST DEBUG: DEBUG RAISE MESSAGE 2016-10-23 21:19:07 JST LOG: LOG RAISE MESSAGE 2016-10-23 21:19:07 JST INFO: INFO RAISE MESSAGE foo 2016-10-23 21:19:07 JST NOTICE: NOTICE RAISE MESSAGE foo,123 2016-10-23 21:19:07 JST WARNING: WARNING RAISE MESSAGE 出力するレベルをdebug1にしたのですべて出力されているのが確認できます。 尚、出力レベルについてですが、client_min_messages, log_min_messages = warningなどがありますので~ PostgreSQLサイトで詳細を確認してみてください。 以上、RAISEによるメッセージ出力でした。 ---- ⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]'' #htmlinsertpcsp(db-btm.html,db-sp.html)
タイムスタンプを変更しない
---- ⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]'' ---- * メッセージを表示させる・RAISE [#fd81846b] PL/pgSQLでプログラム開発しデバックする時など、メッセージを表示したくなると思います。~ RAISEを使用すればメッセージを表示することができます。~ 尚、例外であるEXCEPTIONについては、次の記事「[[エラー時のメッセージ出力>PL/pgSQL/エラー時のメッセージ出力]]」に詳細を記します。 #contents #htmlinsertpcsp(db-top.html,db-sp.html) * RAISEの構文 [#s8ba9776] RAISEの構文について以下に記します。~ 尚、詳細なRAISEの説明については、「[[PostgreSQLのサイトを参照してください。>https://www.postgresql.jp/document/9.2/html/plpgsql-errors-and-messages.html]]」。~ 基本的な構文は以下のようになります。 RAISE [ level ] 'メッセージ' 変数などを表示したい場合は、%を使用します。 RAISE [ level ] 'メッセージ %', foo 複数の変数の値を表示したい場合は、以下ようになります。 RAISE [ level ] 'メッセージ foo=% bar=%', foo,bar ** levelについて [#vdd59fbb] 上記の構文の[level]ですが、以下のレベルを指定することができます。~ levelは省略可能であり、省略した場合は、EXCEPTIONになります。 -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION 上述しましたが、EXCEPTIONについては、次の記事「[[エラー時のメッセージ出力>PL/pgSQL/エラー時のメッセージ出力]]」に詳細を記します。 * RAISEのサンプルプログラム [#r5be9c4d] 以下のようにEXCEPTIONを除いたサンプルを以下に記します。 #ref(raise_sample.sql) CREATE OR REPLACE FUNCTION raise_sample() RETURNS void AS $$ DECLARE foo text := 'foo'; bar int := 123; BEGIN RAISE DEBUG 'DEBUG RAISE MESSAGE'; RAISE LOG 'LOG RAISE MESSAGE'; RAISE INFO 'INFO RAISE MESSAGE %', foo; RAISE NOTICE 'NOTICE RAISE MESSAGE %,%', foo, bar; RAISE WARNING 'WARNING RAISE MESSAGE'; END $$ LANGUAGE plpgsql ; levelにDEBUG, LOG, INFO, NOTICE, WARNINGを指定してメッセージを出力するサンプルです。 * サンプルの実行 [#gfb31ec6] 以下のコマンドで上記のFUNCTIONを登録しました。~ みなさんの環境にあったオプションで登録してください。 $ psql -U sakura -f raise_sample.sql sakuradb CREATE FUNCTION 実行結果は以下の通りになります。 sakuradb=# select raise_sample(); INFO: INFO RAISE MESSAGE foo NOTICE: NOTICE RAISE MESSAGE foo,123 WARNING: WARNING RAISE MESSAGE raise_sample -------------- (1 row) 上記の通りターミナルにINFO, NOTICE, WARNINGが表示されているのが確認できますが、~ DEBUG, LOGが出力されていません。~ この出力は、一部ログに出力されています。 $ cat /var/log/postgresql/postgresql-9.3-main.log | grep 'RAISE MESSAGE' 2016-10-23 21:09:26 JST LOG: LOG RAISE MESSAGE 2016-10-23 21:09:26 JST WARNING: WARNING RAISE MESSAGE LOGとWARNINGが出力されているのが確認できます。~ (ディストリビューションやインストール方法によって出力されるログファイルのディレクトリが異なりますので、みなさんの環境にあった値に読み替えてください。) 上記の出力をみても、DEBUGが表示されていません。~ これは、postgresql.confのlog_min_messagesにdebug1を指定すればログに出力されます。~ 変更前 #log_min_messages = warning # values in order of decreasing detail: 変更後 log_min_messages = debug1 # values in order of decreasing detail: ログ確認 $ cat /var/log/postgresql/postgresql-9.3-main.log | grep 'RAISE MESSAGE' <省略> 2016-10-23 21:19:07 JST DEBUG: DEBUG RAISE MESSAGE 2016-10-23 21:19:07 JST LOG: LOG RAISE MESSAGE 2016-10-23 21:19:07 JST INFO: INFO RAISE MESSAGE foo 2016-10-23 21:19:07 JST NOTICE: NOTICE RAISE MESSAGE foo,123 2016-10-23 21:19:07 JST WARNING: WARNING RAISE MESSAGE 出力するレベルをdebug1にしたのですべて出力されているのが確認できます。 尚、出力レベルについてですが、client_min_messages, log_min_messages = warningなどがありますので~ PostgreSQLサイトで詳細を確認してみてください。 以上、RAISEによるメッセージ出力でした。 ---- ⌣''[[PL/pgSQL入門ページに戻る>PL/pgSQL入門]]'' #htmlinsertpcsp(db-btm.html,db-sp.html)
テキスト整形のルールを表示する
添付ファイル:
raise_sample.sql
992件
[
詳細
]