SVL_STORED_PROC_MESSAGES
システムビュー SVL_STORED_PROC_MESSAGES を照会して、ストアドプロシージャメッセージに関する情報を取得できます。ストアドプロシージャコールがキャンセルされた場合でも、発生したメッセージがログに記録されます。ストアドプロシージャ呼び出しごとにクエリ ID を受け取ります。ログ記録されるメッセージの最小レベルを設定する方法の詳細については、stored_proc_log_min_messages を参照してください。
SVL_STORED_PROC_MESSAGES はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_PROCEDURE_MESSAGES でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
userid | integer | ステートメントを実行するために使用された権限を持つユーザーの ID。この呼び出しが SECURITY DEFINER ストアドプロシージャ内にネストされている場合、これはそのストアドプロシージャの所有者のユーザー ID です。 |
session_userid | integer | セッションの作成元であり、最上位ストアドプロシージャ呼び出しの呼び出し元であるユーザーの ID。 |
pid | integer | プロセス ID。 |
xid | bigint | プロシージャ呼び出しのクエリのトランザクション ID。 |
query | integer | プロシージャ呼び出しのクエリ ID。 |
recordtime | timestamp | メッセージが発生した時刻 (UTC)。 |
loglevel | integer | 発生したメッセージのログレベルの数値。使用できる値: 20 – LOG の場合 30 – INFO の場合 40 – NOTICE の場合 50 – WARNING の場合 60 – EXCEPTION の場合 |
loglevel_text | character(10) | loglevel の数値に対応するログレベル。可能な値: LOG、INFO、NOTICE、WARNING、EXCEPTION。 |
メッセージ | character(1024) | 発行されたメッセージのテキスト。 |
linenum | integer | 発行されたステートメントの行番号。 |
querytext | character(500) | プロシージャ呼び出しのクエリの実際のテキスト。 |
label | character(320) | クエリを実行するために使用される名前、または SET QUERY_GROUP コマンドによって定義されるラベル。クエリがファイルベースでないか、QUERY_GROUP パラメータが設定されていない場合、このフィールドの値はデフォルト になります。 |
aborted | integer | ストアドプロシージャがシステムによって停止されたか、ユーザーによってキャンセルされた場合、この列は 1 になります。呼び出しが最後まで実行された場合、この列は 0 になります。 |
message_xid | bigint | 発行されたメッセージのトランザクション ID。 |
サンプルクエリ
次の SQL ステートメントは、SVL_STORED_PROC_MESSAGES を使用して発行されたメッセージを確認する方法を示しています。
-- Create and run a stored procedure CREATE OR REPLACE PROCEDURE test_proc1(f1 int) AS $$ BEGIN RAISE INFO 'Log Level: Input f1 is %',f1; RAISE NOTICE 'Notice Level: Input f1 is %',f1; EXECUTE 'select invalid'; RAISE NOTICE 'Should not print this'; EXCEPTION WHEN OTHERS THEN raise exception 'EXCEPTION level: Exception Handling'; END; $$ LANGUAGE plpgsql; -- Call this stored procedure CALL test_proc1(2); -- Show raised messages with level higher than INFO SELECT query, recordtime, loglevel, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE loglevel > 30 AND query = 193 ORDER BY recordtime; query | recordtime | loglevel | loglevel_text | message | aborted -------+----------------------------+----------+---------------+-------------------------------------+--------- 193 | 2020-03-17 23:57:18.277196 | 40 | NOTICE | Notice Level: Input f1 is 2 | 1 193 | 2020-03-17 23:57:18.277987 | 60 | EXCEPTION | EXCEPTION level: Exception Handling | 1 (2 rows) -- Show raised messages at EXCEPTION level SELECT query, recordtime, loglevel, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE loglevel_text = 'EXCEPTION' AND query = 193 ORDER BY recordtime; query | recordtime | loglevel | loglevel_text | message | aborted -------+----------------------------+----------+---------------+-------------------------------------+--------- 193 | 2020-03-17 23:57:18.277987 | 60 | EXCEPTION | EXCEPTION level: Exception Handling | 1
次の SQL ステートメントは、ストアドプロシージャの作成時に、SET オプションと SVL_STORED_PROC_MESSAGES を使用して発行されたメッセージを表示する方法を示します。test_proc() には最低ログレベルの NOTICE があるため、SVL_STORED_PROC_MESSAGES には、NOTICE、WARNING、EXCEPTION レベルのメッセージのみが記録されます。
-- Create a stored procedure with minimum log level of NOTICE CREATE OR REPLACE PROCEDURE test_proc() AS $$ BEGIN RAISE LOG 'Raise LOG messages'; RAISE INFO 'Raise INFO messages'; RAISE NOTICE 'Raise NOTICE messages'; RAISE WARNING 'Raise WARNING messages'; RAISE EXCEPTION 'Raise EXCEPTION messages'; RAISE WARNING 'Raise WARNING messages again'; -- not reachable END; $$ LANGUAGE plpgsql SET stored_proc_log_min_messages = NOTICE; -- Call this stored procedure CALL test_proc(); -- Show the raised messages SELECT query, recordtime, loglevel_text, trim(message) as message, aborted FROM svl_stored_proc_messages WHERE query = 149 ORDER BY recordtime; query | recordtime | loglevel_text | message | aborted -------+----------------------------+---------------+--------------------------+--------- 149 | 2020-03-16 21:51:54.847627 | NOTICE | Raise NOTICE messages | 1 149 | 2020-03-16 21:51:54.84766 | WARNING | Raise WARNING messages | 1 149 | 2020-03-16 21:51:54.847668 | EXCEPTION | Raise EXCEPTION messages | 1 (3 rows)