

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# SVL\_STORED\_PROC\_MESSAGES
<a name="r_SVL_STORED_PROC_MESSAGES"></a>

システムビュー SVL\_STORED\_PROC\_MESSAGES を照会して、ストアドプロシージャメッセージに関する情報を取得できます。ストアドプロシージャコールがキャンセルされた場合でも、発生したメッセージがログに記録されます。ストアドプロシージャ呼び出しごとにクエリ ID を受け取ります。ログ記録されるメッセージの最小レベルを設定する方法の詳細については、stored\_proc\_log\_min\_messages を参照してください。

SVL\_STORED\_PROC\_MESSAGES はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「[システムテーブルとビューのデータの可視性](cm_chap_system-tables.md#c_visibility-of-data)」を参照してください。

このテーブルの一部またはすべてのデータは、SYS モニタリングビュー [SYS\_PROCEDURE\_MESSAGES](SYS_PROCEDURE_MESSAGES.md) でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。

## テーブルの列
<a name="r_SVL_STORED_PROC_MESSAGES-table-columns"></a>


| 列名  | データ型  | 説明  | 
| --- | --- | --- | 
| 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。 | 

## サンプルクエリ
<a name="r_SVL_STORED_PROC_MESSAGES-sample-query"></a>

次の 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)
```