テーブル、列、またはその他の構成要素にラベルをつけます。
Synopsis
simple-identifier ::=
identifier-start { identifier-part }
identifier-start ::=
letter | % | _
identifier-part ::=
letter | number | _ | @ | # | $
delimited-identifier ::=
" delimited-identifier-part { delimited-identifier-part } "
delimited-identifier-part ::=
non-double-quote-character | double-quote-symbol
double-quote-symbol ::=
""
識別子はエンティティの名前で、テーブル名や列の名前、インデックス名、カーソル名やその他のエンティティなどです。識別子の長さは最長 40 文字です。Caché は、Unicode システムでテーブル名やフィールド名の 16 ビット (ワイド) 文字をサポートします。 ワイド名の長さは最長 40 文字です。識別子に SQL
予約語を使用することはできません。
識別子は単純な識別子か、もしくはデリミタ付き識別子のいずれかです。
既定では、Caché は単純な識別子のみをサポートします。区切り識別子のサポートは、
Caché 構成マネージャを使用して設定できます。[詳細] タブで、[SQL] オプションのリストを表示します。
[区切り識別子をサポート] オプションが表示されます。このオプションを "いいえ" (既定) に設定することによって、Caché がテーブル名、フィールド名、他のエンティティに対して単純な識別子のみをサポートすることを指定します。"はい" を設定することによって、Caché が単純な識別子と区切り文字付きの識別子の両方をサポートすることを指定します。
単純な識別子は一意の名前であり、SQLキーワードではありません。単純な識別子の名前付け規約は、以下のとおりです。
-
最初の文字は、非数字文字、アンダースコア (_)、またはパーセント記号 (%) です。
-
次に続く文字は、非数字文字、数字、アンダースコア (_)、アットマーク (@)、ポンド記号 (#)、またはドル記号 ($) です。
Note:
句読点と数字
のみからなる識別子は無効となる場合があるため、通常は使用しないでください。例えば、テーブル名とフィールド名は対応するクラス名とプロパティ名を生成しますが、これらの名前には最低でも 1 つの数字以外の文字が必要です。さらには、2 つのアンダースコア文字で始まる識別子 (
__name) または連続する 2 つのポンド記号を含む識別子 (
nn##nn) は、
絶対に作成しないでください。
非数字文字とは、Caché ObjectScript
$ZNAME 関数の検証に合格する任意の文字であると定義されます。既定では、A から Z までの大文字 (ASCII 6590)、a から z までの小文字 (ASCII 97122)、およびアクセント記号付の文字 (ASCII 215 と 247 を除く ASCII 192255) です。単純な識別子は、大文字と小文字を区別しません。規約により、最初は大文字で表示されます。
数字文字は、0 から 9 までの数字で定義されます。
句読記号は、演算子としても使用されます。SQL では、# 記号はモジュロ演算子として使用されます。Caché ObjectScript では、アンダースコア文字は 2 つの文字列の連結に使用されます。句読記号の演算子としての解析のあいまいさは、演算子の前後にスペースを配置することで解決できます。
単純な識別子は、空白や上記で指定されている以外の句読点文字を含むことができません。インターシステムズの SQL インポート・ツールは、インポートされたテーブル名から空白を削除します。
Caché は、文字列が有効な識別子であるかどうかをテストするクラス・メソッドを提供しています。このメソッドは、文字の使用と予約語の両方に対してテストします。また、最大 200 文字の長さテストも実行します。以下の Caché ObjectScript 例は、このメソッドを使用しています。
WRITE !,$SYSTEM.SQL.IsValidRegularIdentifier("Fred")
WRITE !,$SYSTEM.SQL.IsValidRegularIdentifier("%Fred#123")
WRITE !,$SYSTEM.SQL.IsValidRegularIdentifier("%#$@_Fred")
WRITE !,$SYSTEM.SQL.IsValidRegularIdentifier("1Fred")
WRITE !,$SYSTEM.SQL.IsValidRegularIdentifier("Fr ed")
WRITE !,$SYSTEM.SQL.IsValidRegularIdentifier("%alphaup")
最初の 3 つのメソッドは 1 を返し、有効な識別子であることを示し、最後の 3 つのメソッドは 0 を返し、有効な識別子でないことを示します。最後の 3 つのメソッドのうち 2 つが無効なのは、数字で始まっているのと、スペースが含まれているという点で文字規則に違反しているためです。最終のメソッド呼び出しが 0 を返すのは、指定された文字列が予約語であるためです。これらの規則テストは最小要件で、あらゆる SQL 使用で有効な識別子として検証されているわけではないことに注意してください。
このメソッドは、ODBC または JDBC からストアド・プロシージャ %SYSTEM.SQL_IsValidRegularIdentifier("nnnn") として呼び出すこともできます。
区切り文字付きの識別子は、区切り文字で囲まれた名前です。Caché SQL は、区切り文字として二重引用符 (") をサポートします。
リテラル値を区切るには、Caché SQL は一重引用符 (') を使用します。これにより、区切り文字付き識別子は二重引用符 (") で、リテラル値は一重引用符 (') で指定されなければなりません。
区切り文字付き識別子は、一意の名前でなければなりません。これには、空白も含めた印刷可能文字を含みます。お勧めできませんが、SQL キーワードも含まれます。最初はどのような文字でもかまいません。区切り文字付き識別子は大文字と小文字を区別しません。 規約により、識別子の最初の文字は大文字で表示されます。
現在 Caché SQL は、大文字と小文字を区別しないで実行しますが、まず識別子をすべて大文字に変換してから比較します。これは、使用されている名前の実際の文字には何の影響もありません(他の SQL の実装では、デリミタ付き識別子の大文字と小文字の区別を個別に処理する可能性もあります。したがって、大文字と小文字を意識した識別子の使用を避けることをお勧めします)。