16.20 - DECLARE - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL ストアド プロシージャおよび埋め込みSQL

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1148-162K-JPN

目的

1つまたは複数のローカル変数を宣言します。

呼び出し

実行可能形式ではない制御の宣言。

ストアド プロシージャのみ。

構文



variable_name
宣言するSQLローカル変数の名前。
これは、有効なTeradata SQL名でなければなりません。予約語や、ステータス変数名として予約されている語を使用することはできません。
実行時には、次に示すように文がラベル付けされていれば、変数を、変数が宣言されているBEGIN…END文のラベルで修飾できます。
label.variable_name
predefined_data_type
宣言するローカル変数のデータ型。
これは事前定義データ型かUDTのいずれかにすることができますが、VARIANT_TYPE UDTデータ型は除きます。
UDT_name
各パラメータのdata_typeの後には、文字データ型のパラメータにCHARACTER SETを指定できます。
CHARACTER SETが指定されていない場合、文字セットは、デフォルトにより、ストアド プロシージャを作成/コンパイルするユーザーの文字セットに設定されます。
data_typeでは、CASESPECIFICやNOT CASESPECIFICを指定することも可能です。
DEFAULT literal
ローカル変数のデフォルト値。
指定される場合、この値は定数でなければならず、指定されたデータ型との互換性がなければなりません。しかし、デフォルトのDateTime値が指定したDateTimeデータ型とは異なる場合は、Teradata Databaseは暗黙の変換を行ないます。詳細は、<Teradata Vantage™データ型およびリテラル、B035-1143>の「データ型の変換」を参照してください。
ローカル変数の宣言にデフォルト値を指定すると、そのデフォルトはリスト内のすべての変数に割り当てられます。
DEFAULT句に式を含めることはできません。
変数のデフォルトを指定しない場合、NULLに初期設定されます。

ANSI準拠

DECLAREは、ANSI/ISO SQL:2011に準拠しています。

許可

なし。

変数の宣言のルール

ローカル変数は、BEGIN…END複合文の中でのみ宣言することができます。

各BEGIN…END複合文では、ローカル変数の宣言をいくつでも指定することができます。それぞれの宣言には、末尾にセミコロン文字を付ける必要があります。

各宣言では、任意の数のローカル変数をカンマ区切りのリストにして指定できます。

複合文内のすべてのローカル変数および条件の宣言は、必ず、いかなるカーソル宣言、条件ハンドラー、その他の文よりも前に指定してください。

ローカル変数の適用範囲は、その変数が宣言されたBEGIN…END複合文と、そこに入れ子になっているすべての複合文です。

1つの複合文で宣言された2つの変数に、同じ名前を使用することはできません。

ただし、入れ子の複合文では、変数名の再使用が可能です。

各々のローカル変数の宣言は、次の要素から成っています。
  • ローカル変数名(必須)
  • 有効なデータ型(必須)
  • ローカル変数のデフォルト値(オプション)

    デフォルト値には、宣言されるデータ型との互換性がなければなりません。しかし、デフォルトのDateTime値が指定したDateTimeデータ型とは異なる場合は、Teradata Databaseは暗黙の変換を行ないます。詳細は、<Teradata Vantage™データ型およびリテラル、B035-1143>の「データ型の変換」を参照してください。

例: 宣言の指定

宣言は完全に指定されています。

DECLARE hErrorMsg CHARACTER(30) DEFAULT ’NO ERROR’;

例: 同じデータ型の複数のローカル変数の指定

1つの宣言文の中で、同じデータ型のローカル変数を複数指定することが可能です。

次の宣言では、hAccountNotempAccountNoの両方をINTEGERで宣言します。どちらの変数にもデフォルトは指定されていないので、いずれの変数にも、デフォルトとしてNULLが割り当てられます。

DECLARE hAccountNo, tempAccountNo INTEGER;

次の文では、hLastNameおよびhFirstNameのデータ型をCHARACTER(30)として宣言します。

DECLARE hFirstName, hLastName CHARACTER(30);

例: 各ローカル変数のデフォルト値の割り当て

デフォルト値は、宣言で指定されたそれぞれのローカル変数に割り当てることができます。

次の例では、’NO ERROR’のデフォルト値を明示的にhNoErrorMsghErrorMsgに割り当てています。

DECLARE hNoErrorMsg, hErrorMsg CHARACTER(30) DEFAULT ’NO ERROR’;

例: 変数MyCircleの宣言

次のDECLARE文は、変数MyCircle(STRUCTURED型UDTタイプCircleUdtを持つ)を宣言し、area()という名前の、入力パラメータに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';