識別子
識別子は、SQLスクリプト内のオブジェクトのユーザー定義の一意の名前です。
•識別子には1つ以上の文字を含めることができます。
•識別子は英字(a-z、A-Z)で始まる必要があります。
•最初の文字の後、次の文字が有効です。
— 英数字:a-z、A-Z、0-9
— Separators: , (comma), ; (semicolon), ' ' (pairs of single quotes)
— 特殊文字:_(アンダースコア)、 /(スラッシュ)、$(ドル記号)、#(ハッシュ記号)
•識別子をSQLスクリプトのキーワード(
SQLスクリプトキーワードを参照)にすることはできませんが、キーワードが二重引用符でエスケープされている場合は別です。
SQLスクリプトのキーワードを名前に持つ宣言変数の例を以下に示します。
DECLARE "VALUE" INTEGER;
DECLARE "CURSOR" CURSOR;
ここで、SQLスクリプトのキーワードVALUEとCURSORは二重引用符で囲まれています。
•識別子を二重引用符で囲むと、スペースやダッシュ、他言語の文字など、他の方法では許されない文字を含めることができます。
それ以外の場合は不正な文字を含む変数の宣言の例:
DECLARE "First Name" VARCHAR(40);
DECLARE "% Returned" DOUBLE;
•識別子は、プロシージャ名、パラメータ名、カーソル名、フィールド名、変数名、カーソル変数名、データタイプ名、例外名、またはラベルに使用できます。ブロックの場合(BEGIN/END、LOOP、WHILE、REPEAT、FOR、LEAVE、ITERATEなど)
•TDV SQLスクリプトは、一連の処理ルールによって識別子を解決します。
— 識別子は大文字と小文字を区別しません。
— SQL式内の識別子は、最初にSQLコンテキストをローカルで調べることによって評価されます。ローカルSQLコンテキスト内で識別子が解決された場合、SQLエンジンは検索を続行しません。
たとえば、SQL WHERE句のデータベース列での識別子名の一致は、ローカル変数、プロシージャ名、または仮パラメータの名前よりも優先されます。
— 識別子がローカルコンテキストで解決されない場合、検索は最小のプレフィックスベースを使用して親コンテキストに進み、スキーマレベルのスコープに移動します。
— SQLコンテキスト空間では大文字と小文字が区別されないため、大文字と小文字の違いにより、SQLコンテキスト内の識別子と一致する名前が区別されません。
— 一致するものが見つからない場合、UndeclaredIdentifierエラーが返されます。