PIPE ステートメント
PIPE ステートメントはコンパイルされた表関数の行を返すために使用されます。
呼び出し
このステートメントは、SQL 表関数のコンパウンド SQL (コンパイル済み) ステートメント内に組み込むことができます。 このステートメントは実行可能ステートメントではなく、動的に準備することはできません。
許可
PIPE ステートメントを呼び出すために、特権は必要ありません。ただし、ステートメントの許可 ID には、 PIPE ステートメントに組み込まれている式を呼び出すために必要な特権がなければなりません。
構文
説明
- ( expression, ... )
- 関数から戻される行の値を指定します。 リスト内の式 (または NULL キーワード) の数は、関数の RETURNS データ・タイプに一致しなければならず、各式の値は、関数の RETURNS データ・タイプの対応する列またはフィールドに割り当て可能でなければなりません。
- row-fullselect
- 関数の RETURNS データ・タイプの列またはフィールドの数に対応する行数を持つ、単一行を返す全選択を指定します。 全選択によって返される行の各列の値は、関数の RETURNS データ・タイプによって返される、対応する列またはフィールドに割り当て可能でなければなりません。row-fullselect の結果が行なしであれば、NULL 値が返されます。
- row-expression
- 関数から返される行の値を指定します。 行内のフィールドの数は関数の RETURNS データ・タイプと一致していなければならず、行内の各フィールドは関数の RETURNS データ・タイプの対応するフィールドに割り当て可能でなければなりません。 row-expression および RETURNS データ・タイプがユーザー定義の行タイプである場合は、タイプ名が同じでなければなりません (SQLSTATE 42821)。
- expression
- スカラー値が関数から返されるように指定します。 表関数の RETURNS データ・タイプは、単一の列を持たなければならず、式値はその列に割り当て可能でなければなりません。
- NULL
- 関数から NULL 値が返されるよう指定します。 NULL 値は、各列または行フィールドに対して返されます。
注
- ローカルに宣言されたプロシージャー: PIPE ステートメントは、SQL 表関数のコンパウンド SQL (コンパイル済み) ステートメント内にローカルに宣言されたプロシージャー内で使用することはできません。
- 同様の用語: PIPE ステートメントを使用する SQL 表関数は、pipelined 関数と呼ばれることもあります。
例
この次の 52 週間に含まれる同じ曜日の週数と日付を、該当する ISO 週数と共に返す、NEXT52 という表関数を作成します。
CREATE OR REPLACE FUNCTION NEXT52 (START_TS TIMESTAMP)
RETURNS TABLE (WEEKNUM SMALLINT, WEEKNUM_DATE DATE, ISO_WEEK SMALLINT)
BEGIN
DECLARE WN INTEGER DEFAULT 1;
DECLARE WND DATE;
SET WND = START_TS;
WHILE (WN < 53) DO
SET WND = WND + 7 DAYS;
PIPE (WN, WND, WEEK_ISO(WND));
SET WN = WN + 1;
END WHILE;
RETURN;
END