テーブル、列、またはその他の構成要素にラベルを付けます。
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 予約語を使用することはできません。
識別子は単純な識別子か、もしくは区切り文字付き識別子のいずれかです。SQL は既定で単純な識別子と区切り文字付き識別子の両方をサポートします。
単純な識別子
単純な識別子は一意の名前であり、SQL キーワードではありません。単純な識別子の名前付け規約は、以下のとおりです。
Note:
句読点と数字のみからなる識別子は無効となる場合があるため、通常は使用しないでください。例えば、テーブル名とフィールド名は対応するクラス名とプロパティ名を生成しますが、これらの名前には数字以外の文字が最低でも 1 文字必要です。さらには、2 つのアンダースコア文字で始まる識別子 (__name) または連続する 2 つのポンド記号を含む識別子 (nn##nn) は、絶対に作成しないでください。
非数字文字とは、Caché ObjectScript $ZNAME 関数の検証に合格する任意の文字であると定義されます。既定では、A から Z までの大文字 (ASCII 65–90)、a から z までの小文字 (ASCII 97–122)、およびアクセント記号付きの文字 (ASCII 215 と 247 を除く ASCII 192–255) です。単純な識別子は、大文字と小文字を区別しません。規約により、最初は大文字で表示されます。
数字文字は、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 識別子は、既定で大文字と小文字を区別します。現在 Caché SQL は、大文字と小文字を区別しないで実行しますが、まず識別子をすべて大文字に変換してから比較します。これは、使用されている名前の実際の文字には何の影響もありません (他の SQL の実装では、区切り文字付き識別子の大文字と小文字の区別を個別に処理する場合もあります。したがって、大文字と小文字を意識した識別子の使用を避けることをお勧めします)。
Caché SQL のパスワードでは大文字と小文字が区別されることに注意してください。
識別子サポートの構成
既定では、Caché は単純な識別子と区切り文字付き識別子の両方をサポートします。現在のプロセスの区切り文字付き識別子のサポートは、SET OPTION コマンドに SUPPORT_DELIMITED_IDENTIFIERS キーワードを指定することで設定できます。区切り文字付き識別子のサポートは、以下のようにしてシステム全体に設定できます。
Caché 5.1 での既定値は “真” (1) で、Caché は単純な識別子と区切り文字付き識別子の両方をシステム全体でサポートします (以前のバージョンの Caché は既定では区切り文字付き識別子をサポートしていません)。このオプションを “偽” (0) に設定すると、Caché はテーブル名、フィールド名、その他のエンティティに対して単純な識別子のみをサポートするように指定されます。
識別子変換
SQL 識別子内の特定の文字を対応するオブジェクト識別子内で他の文字に変換するように構成することができます。これにより、識別子で指定可能な文字の規則が異なる環境間での識別子の使用が容易になります。
[システム管理ポータル] で [システム構成]→[詳細設定] を選択し、[カテゴリ] プルダウン・リストで [SQL] を選択します。[Identifier Translation — From][Identifier Translation — To] の現在の設定を表示および編集します。DDL 実行時に SQL 識別子をオブジェクト識別子に変換する場合、"From" 文字列の文字は、"To" 文字列の文字に変換されます。
また、ObjectScript $SYSTEM.SQL.SetDDLIdentifierTranslations() 関数を使用することもできます。
関連項目
リテラル 予約語 SET OPTION