1つまたは複数のローカル変数を宣言します。
ANSI準拠
DECLAREは、ANSI/ISO SQL:2011に準拠しています。
必要な権限
なし。
呼び出し
実行可能形式ではない制御の宣言。
ストアド プロシージャのみ。
構文
DECLARE variable_name [,...] { predefined_data_type | UDT_name } [ attribute ] [ DEFAULT { literal | NEW [SYSUDTLIB.] constructor_name | NULL } ] ;
構文要素
- variable_name
- 宣言するSQLローカル変数の名前。
- predefined_data_type
- 宣言するローカル変数のデータ型。
- UDT_name
- 各パラメータのdata_typeの後には、文字データ型のパラメータにCHARACTER SETを指定できます。
- DEFAULT literal
- ローカル変数のデフォルト値。
使用上の注意
ローカル変数は、BEGIN END複合文の中でのみ宣言することができます。
各BEGIN END複合文では、ローカル変数の宣言をいくつでも指定することができます。それぞれの宣言には、末尾にセミコロン文字を付ける必要があります。
各宣言では、任意の数のローカル変数をカンマ区切りのリストにして指定できます。
複合文内のすべてのローカル変数および条件の宣言は、必ず、いかなるカーソル宣言、条件ハンドラー、その他の文よりも前に指定してください。
ローカル変数の適用範囲は、その変数が宣言されたBEGIN END複合文と、そこに入れ子になっているすべての複合文です。
1つの複合文で宣言された2つの変数に、同じ名前を使用することはできません。
ただし、入れ子の複合文では、変数名の再使用が可能です。
- ローカル変数名(必須)
- 有効なデータ型(必須)
- ローカル変数のデフォルト値[オプション]
デフォルト値には、宣言されるデータ型との互換性がなければなりません。しかし、デフォルトのDateTime値が指定したDateTimeデータ型とは異なる場合は、Vantageは暗黙の変換を行ないます。詳細は、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。
例: 宣言の指定
宣言は完全に指定されています。
DECLARE hErrorMsg CHARACTER(30) DEFAULT ’NO ERROR’;
例: 同じデータ型の複数のローカル変数の指定
1つの宣言文の中で、同じデータ型のローカル変数を複数指定することが可能です。
次の宣言では、hAccountNoとtempAccountNoの両方をINTEGERで宣言します。どちらの変数にもデフォルトは指定されていないので、いずれの変数にも、デフォルトとしてNULLが割り当てられます。
DECLARE hAccountNo, tempAccountNo INTEGER;
次の文では、hLastNameおよびhFirstNameのデータ型をCHARACTER(30)として宣言します。
DECLARE hFirstName, hLastName CHARACTER(30);
例: 各ローカル変数のデフォルト値の割り当て
デフォルト値は、宣言で指定されたそれぞれのローカル変数に割り当てることができます。
次の例では、’NO ERROR’のデフォルト値を明示的にhNoErrorMsgとhErrorMsgに割り当てています。
DECLARE hNoErrorMsg, hErrorMsg CHARACTER(30) DEFAULT ’NO ERROR’;
例: 変数MyCircleの宣言
次のDECLARE文は、変数MyCircle(STRUCTURED型UDTタイプCircleUdtを持つ)を宣言し、circleという名前の、入力パラメータに1、1、そして9を持つコンストラクタ外部ルーチンによってデフォルト値が決定されるようにします。
DECLARE MyCircle CircleUdt DEFAULT NEW circle(1,1,9);
例: hBirthdateをDATEデータ型として宣言
次の文では、hBirthdateをデフォルト値'1998-01-06'のDATEデータ型として宣言します。
DECLARE hBirthdate DATE DEFAULT '1998-01-06';