PSQL Programmer's Guide (v11)

SQL 変数ステートメント

SQL 変数ステートメントを使用して、ステートメント間で内部的に値を格納することができます。SQL 変数ステートメントには、以下のステートメントがあります。

これらのステートメントはストアド プロシージャ内で使用できます。

プロシージャ所有の変数

ストアド プロシージャ内で定義する SQL 変数は、プロシージャ所有の変数です。その適用範囲は、SQL 変数が定義されるプロシージャです。したがって、そのプロシージャ内でしかその変数を参照できません。プロシージャが別のプロシージャを呼び出す場合、呼び出し側プロシージャのプロシージャ所有の変数は被呼び出し側プロシージャで直接使用できません。その代わり、その変数をパラメーターで渡す必要があります。同じストアド プロシージャでプロシージャ所有の変数を 2 回以上宣言することはできません。

ストアド プロシージャの本体が複合ステートメントの場合、そのプロシージャで宣言された SQL 変数名は、そのプロシージャのパラメーター リスト内のパラメーター名と同じにすることはできません。複合ステートメントの詳細については、複合ステートメントを参照してください。

代入ステートメント

代入ステートメントは、SQL 変数の値を初期化または変更します。値の式は、定数、演算子、この SQL 変数またはほかの SQL 変数に関連する計算された式とすることができます。

SET :CourseName = 'HIS305'; 

値の式は、SELECT ステートメントとすることもできます。

SET :MaxEnrollment = (SELECT Max_Size FROM Class
   WHERE ID = classId); 

このステートメントの構文の詳細については、『SQL Engine Reference』で、SET を参照してください。


ストアド プロシージャ (リレーショナル インターフェイス)

SQL 制御ステートメント