リファレンスガイド> TDV SQLスクリプト> SQL言語の概念> 非カーソル変数
 
非カーソル変数
SQLスクリプトの非カーソル変数は、単一の値に解決される式またはその他のエレメントです。名前とデータタイプを指定することにより、非カーソル変数を定義できます。
構文
DECLARE <varName>[,…] <dataType>
[DEFAULT <valueExpression>]
備考
DEFAULT構文はオプションです。変数を初期化するために使用されます。
DEFAULT句で初期化されていない変数の値はNULLです。
変数は、リテラル値が有効な場所であればどこでもSQLスクリプト式で使用できます。たとえば、1 +1とx + yはどちらも有効な式です(xとyが変数として宣言されていると仮定します)。
SQLスクリプトの変数には、スコープ規則が適用されます。
変数は、親ブロックの変数と同じ名前のブロック内で宣言できます。パラメータは、プロシージャのメインブロックで定義されているかのように扱われます。
文字列型変数は一重引用符(「文字列」)で区切られます。文字列内でアポストロフィを指定するには、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