如果在数据库服务器上设置 DELIMIDENT 环境变量,则您不可使用双引号(")来定界文字的字符串。如果设置 DELIMIDENT,则数据库服务器将括在双引号中的字符串解释为 SQL 标识符,而不是作为文字的字符串。如果未设置 DELIMIDENT,则将双引号之间的字符解释为文字的字符串,而不是标识符。要获取更多信息,请参阅 使用字符串中的引号,以及 GBase 8s SQL 参考指南 中关于 DELIMIDENT 的描述。
在客户端系统上也支持
DELIMIDENT,在此,可将它设置为
y、为
n,或不设置。
- y 指定客户端应用必须使用单引号(')来定界文字的字符串,且必须仅在定界的 SQL 标识符周围使用双引号(")。与未定界的标识符相比,定界的标识符可支持更大的字符集。定界的字符串或定界的标识符之内的字母是区分大小写的。
- n 指定客户端应用可使用双引号(")或单引号(')来定界字符串,但不定界 SQL 标识符。如果数据库服务器在需要 SQL 标识符的上下文中遇到由双引号或单引号定界的字符串,则它发出错误。然而,可由单引号(')定界限定 SQL 标识符的所有者名称。您必须使用一对相同的引号符号来定界字符串。
- 在客户端系统上不带有值地指定 DELIMIDENT,要求客户端应用使用 DELIMIDENT 设置,其为它们的应用编程接口(API)的缺省值。
GBase 8s
的客户端 API 使用下列缺省的
DELIMIDENT 设置:
- 对于 OLE DB 和 .NET,缺省的 DELIMIDENT 设置为 y
- 对于 ESQL/C、JDBC 和 ODBC,缺省的 DELIMIDENT 设置为 n
- 以 ESQL/C 作为底层的 API、DataBlade API (LIBDMI) 以及 C++ API 的行为如同 ESQL/C,并使用 'n' 作为缺省值,如果在客户端系统上未指定 DELIMIDENT 的值的话。
即使设置
DELIMIDENT,您也可使用单引号(
')来定界
授权标识符作为数据库对象名称的所有者名称组件,如下例所示:
RENAME COLUMN 'Owner'.table2.collum3 TO column3;
然而,通用的规则是,当设置
DELIMIDENT 时,SQL 解析器将由单引号定界的字符串解释为字符串文字,将由双引号(
" )定界的字符串解释为 SQL 标识符。