非カーソル変数
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