

 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\_STATEMENTTEXT
<a name="r_SVL_STATEMENTTEXT"></a>

SVL\_STATEMENTTEXT ビューを使用して、システムで実行されたすべての SQL コマンドの完全な記録を取得します。

SVL\_STATEMENTTEXT ビューには[STL\_DDLTEXT](r_STL_DDLTEXT.md)、[STL\_QUERYTEXT](r_STL_QUERYTEXT.md)、[STL\_UTILITYTEXT](r_STL_UTILITYTEXT.md) テーブルのすべての行の統合が含まれます。また、このビューには STL\_QUERY テーブルの結合も含まれます。

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

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

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


| 列名  | データ型  | 説明  | 
| --- | --- | --- | 
| userid  | integer  | エントリを生成したユーザーの ID。 | 
| xid  | bigint  | ステートメントに関連付けられるトランザクション ID。 | 
| pid  | integer  | ステートメントのプロセス ID。 | 
| label  | character(320)  | クエリを実行するために使用される名前、または SET QUERY\_GROUP コマンドによって定義されるラベル。クエリがファイルベースでないか、QUERY\_GROUP パラメータが設定されていない場合、このフィールドは空になります。 | 
| starttime  | timestamp | ステートメントの実行が開始された正確な時間。秒の小数部の精度 (6 桁) を使用します。例: 2009-06-12 11:29:19.131358  | 
| endtime  | timestamp | ステートメントの実行が終了した正確な時間。秒の小数部の精度 (6 桁) を使用します。例: 2009-06-12 11:29:19.193640  | 
| sequence  | integer  | 1 つのステートメントに含まれる文字数が 200 を超える場合、そのステートメントは追加の行に記録されます。シーケンス 0 が最初の行、1 が 2 番目の行、という順番です。 | 
| type  | varchar(10)  | SQL ステートメントのタイプ。QUERY、DDL、または UTILITY です。 | 
| text  | character(200)  | 200 文字単位の SQL テキスト。このフィールドには、バックスラッシュ (\\\\) や改行 (\\n) などの特殊文字が含まれる場合があります。 | 

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

次のクエリでは、2009 年 6 月 16 日に実行された DDL ステートメントを返します。

```
select starttime, type, rtrim(text) from svl_statementtext
where starttime like '2009-06-16%' and type='DDL' order by starttime asc;

starttime                  | type |              rtrim
---------------------------|------|--------------------------------
2009-06-16 10:36:50.625097 | DDL  | create table ddltest(c1 int);
2009-06-16 15:02:16.006341 | DDL  | drop view alltickitjoin;
2009-06-16 15:02:23.65285  | DDL  | drop table sales;
2009-06-16 15:02:24.548928 | DDL  | drop table listing;
2009-06-16 15:02:25.536655 | DDL  | drop table event;
...
```

### ストアド SQL の再構築
<a name="r_SVL_STATEMENTTEXT-reconstruct-sql"></a>

SVL\_STATEMENTTEXT の `text` 列に保存されている SQL を再構築するには、SELECT ステートメントを実行して、`text` 列の 1 つ以上の部分から SQL を作成します。再構築された SQL を実行する前に、特殊文字 (`\n`) がある場合は、改行に置き換えます。次の SELECT ステートメントの結果は、`query_statement`フィールドに再構築された SQL の行です。

```
select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS query_statement 
from SVL_STATEMENTTEXT where pid=pg_backend_pid();
```

例えば、次のクエリでは 3 つの列を選択します。クエリ自体は 200 文字より長く、SVL\_STATEMENTTEXT の部分に保存されます。

```
select
1 AS a0123456789012345678901234567890123456789012345678901234567890,
2 AS b0123456789012345678901234567890123456789012345678901234567890,
3 AS b012345678901234567890123456789012345678901234
FROM stl_querytext;
```

この例では、クエリは SVL\_STATEMENTTEXT の `text` 列の 2 つの部分 (行) に保存されます。

```
select sequence, text from SVL_STATEMENTTEXT where pid = pg_backend_pid() order by starttime, sequence;
```

```
 sequence |                                                                                             text                                                                                                   
----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234
        1 | \nFROM stl_querytext;
```

STL\_STATEMENTTEXT に保存された SQL を再構築するには、次の SQL を実行します。

```
select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text 
from SVL_STATEMENTTEXT where pid=pg_backend_pid();
```

再構築された SQL をクライアントで使用するには、特殊文字 (`\n`) を改行に置き換えます。

```
                                                                                                             text                                                                                                             
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;
```