DECLARE - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vqj1592443206677.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1148
Product Category
Software
Teradata Vantage

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ローカル変数の名前。
これは、有効な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データ型とは異なる場合は、Vantageは暗黙の変換を行ないます。詳細は、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。
ローカル変数の宣言にデフォルト値を指定すると、そのデフォルトはリスト内のすべての変数に割り当てられます。
DEFAULT句に式を含めることはできません。
変数のデフォルトを指定しない場合、NULLに初期設定されます。

使用上の注意

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

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

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

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

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

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

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

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

    デフォルト値には、宣言されるデータ型との互換性がなければなりません。しかし、デフォルトのDateTime値が指定したDateTimeデータ型とは異なる場合は、Vantageは暗黙の変換を行ないます。詳細は、<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を持つ)を宣言し、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';