非カーソル変数

SQL スクリプトの非カーソル変数は、単一の値に解決される式またはその他のエレメントです。名前とデータ タイプを指定することにより、非カーソル変数を定義できます。

構文

DECLARE <varName>[,…] <dataType>  
[DEFAULT <valueExpression>]

備考

DEFAULT 構文はオプションです。変数の初期化に使用されます。
DEFAULT 句で初期化されていない変数の値は NULL です。
変数は、リテラル値が有効な場所ならどこでも SQL スクリプト式で使用できます。たとえば、1 + 1 と x + y は両方とも有効な式です (x と y が宣言された変数であると仮定します)。
SQL スクリプト内の変数には、スコープ ルールが適用されます。
変数は、親ブロックの変数と同じ名前を持つブロック内で宣言できます。パラメーターは、プロシージャのメイン ブロックで定義されているかのように扱われます。
文字列型の変数は、一重引用符 ('string') で区切ります。文字列内にアポストロフィを指定するには、アポストロフィを 2 つ続けて使用します ('')。
タイプ BLOB または CLOB の変数、パラメーター、およびカラム定義を宣言できます。
すべての変数が同じデータ タイプで、それぞれに一意の名前が付いている場合は、一度に複数の変数を宣言できます。
<valueExpression> は、IN パラメーター、このブロックで以前に宣言された変数、および親ブロックの任意の変数を使用できます。現在のブロックでは、値式は後で定義される変数を使用できません。値式の型が変数の型と一致しない場合、暗黙のキャストが実行されます (可能な場合)。IN パラメーターの詳細については、「SQL スクリプト プロシージャ ヘッダー」を参照してください。
値式の評価によって例外が発生した場合、まだ初期化されていない他の宣言済み変数は、例外ハンドラーに入る前に NULL に設定されます。

PROCEDURE p ( )
BEGIN
  DECLARE a INTEGER;
  DECLARE b DATE;
  DECLARE c TIME;
  DECLARE d TIMESTAMP;
  DECLARE e DECIMAL;
  DECLARE f FLOAT;
  DECLARE g VARCHAR;
  DECLARE h CHAR;
END
PROCEDURE p ( )
BEGIN
  DECLARE x INTEGER;
  SET x = 1;
  DECLARE x INTEGER; --illegal
END