RETURN ステートメント
RETURN ステートメントはルーチンから戻るために使用されます。 SQL 関数またはメソッドの場合、関数またはメソッドの結果を返します。 SQL プロシージャーの場合、オプションで整数状況値が戻されます。
呼び出し
このステートメントは、SQL 関数、SQL メソッド、または SQL プロシージャーに組み込むことができます。 このステートメントは実行可能ステートメントではなく、動的に準備することはできません。
許可
RETURN ステートメントを呼び出すために、特権は必要ありません。 ただし、ステートメントの許可 ID には、 RETURN ステートメントに組み込まれている式または全選択を呼び出すために必要な特権がなければなりません。
構文
説明
- expression
- ルーチンから戻される値を指定します。
- ルーチンが、コンパイル済み表関数ではない関数またはメソッドの場合は、expression、NULL または fullselect のいずれかを指定する必要があり (SQLSTATE 42631)、結果のデータ・タイプはルーチンの RETURNS タイプに割り当て可能である必要があります (SQLSTATE 42866)。
- ルーチンが、インライン化された表関数の場合は、スカラー式 (スカラー fullselect 以外) は指定できません (SQLSTATE 428F1)。 ルーチンがコンパイル済み表関数の場合、式を指定できません。
- ルーチンがプロシージャーの場合は、expression のデータ・タイプは INTEGER で なければなりません (SQLSTATE 428F2)。 プロシージャーは NULL または fullselect を返すことができません。
- ヌル
- 関数またはメソッドが、RETURNS 節で定義されたデータ・タイプの NULL 値を返すことを指定します。 表関数、行関数、またはプロシージャーからの RETURN に NULL を指定することはできません。
- WITH 共通表式 (common-table-expression)
- 後続の fullselect で使用する共通表式を定義します。
- 全選択
- 関数に対して返される行を指定します。 fullselect 内の列数は、関数の結果の列数に一致していなければなりません (SQLSTATE 42811)。 さらに、fullselect の静的列タイプが、列に対する割り当て規則を使用して関数結果について
宣言された列タイプに割り当てられていなければなりません (SQLSTATE 42866)。
プロシージャーまたはコンパイル済み表関数からの RETURN に fullselect を指定することはできません。
ルーチンがスカラー関数またはメソッドの場合、fullselect は 1 つの列 (SQLSTATE 42823) と、 1 つの行 (SQLSTATE 21000) を返さなければなりません。
ルーチンが行関数の場合は、1 つの行 (SQLSTATE 21505) を返さなければなりません。 ただし、1 つ以上の列が戻されることがあります。
ルーチンが、インライン化された表関数の場合は、1 つ以上の列を持つゼロ以上の行を返すことができます。 fullselect がゼロ個の結果行を持つ場合、RETURN ステートメントによって結果表に行が返されません。
- 関数に対して返される行を指定します。 fullselect 内の列数は、関数の結果の列数に一致していなければなりません (SQLSTATE 42811)。 さらに、fullselect の静的列タイプが、列に対する割り当て規則を使用して関数結果について
宣言された列タイプに割り当てられていなければなりません (SQLSTATE 42866)。
ルール
- SQL 関数またはメソッドの実行は RETURN ステートメントで終わっていなければなりません (SQLSTATE 42632)。
- コンパウンド SQL (コンパイル済み) ステートメントを使用する SQL 表関数では、expression、NULL、および fullselect は指定できません。 行は、PIPE ステートメントを使用して関数から返されます。また、関数を終了するときに、最後に実行するステートメントとして RETURN ステートメントが必要です (SQLSTATE 2F005)。
- コンパウンド SQL (インライン化) ステートメントを使用する SQL 表または行関数では、RETURN ステートメントのみがコンパウンド・ステートメントの終わりで指定できます (SQLSTATE 429BD)。
注
- プロシージャーから値が返されると、
呼び出し元は以下のようにして値にアクセスすることができます。
- SQL プロシージャーが他の SQL プロシージャーから呼び出されたときに DB2_RETURN_STATUS を 検索する GET DIAGNOSTICS ステートメントを使用する。
- CLI アプリケーションでエスケープ節 CALL 構文 (?=CALL...) にある戻り値パラメーター・マーカーに結合されたパラメーターを使用する。 CLI アプリケーションでの
- SQL プロシージャーの CALL の処理後に、SQLCA の sqlerrd[0] フィールドから直接。 このフィールドは、SQLCODE がゼロまたは正の場合にのみ有効です (これ以外の場合は -1 の値と見なされます)。
例
RETURN ステートメントを使用して、SQL プロシージャーから状況値を戻します。
成功した場合は値ゼロが、失敗した場合は -200 が戻されます。
BEGIN
...
GOTO FAIL;
...
SUCCESS: RETURN 0;
FAIL: RETURN -200;
END