DELIMIDENT 环境变量指定括在双引号 ( " ) 之间的字符串是定界数据库标识。
DELIMIDENT 环境变量在客户机系统上也是受支持的,
在客户机系统中它可以设置为 y、
n 或不设置。
y 指定客户机应用程序必须使用单引号 ( ' ) 来对字符串定界,且必须仅在定界的
SQL 标识(它可以支持比未定界的标识中有效的字符集更大的字符集)的两边使用双
引号 ( " )。定界字符串或定界标识中的字母是区分大小写的。这是 OLE DB 和 .NET
的缺省值。
n 指定客户机应用程序可以使用双引号 ( " ) 或单引号 ( ' ) 来对字符串定界,但
是不对 SQL 标识定界。
如果数据库服务器在需要 SQL 标识的上下文中遇到用双引号
或单引号定界的字符串,将发出错误。符合 SQL 标识条件的所有者名称可以用单引
号 ( ' ) 来定界。 必须使用一对相同的引号来对字符串定界。
这是 ESQL/C、JDBC 和 ODBC 的缺省值。具有 ESQL/C 作为底层的 API(如
GBase 8s 4GL、DataBlade® API (LIBDMI) 和 C++ API)具有与 ESQL/C 相同的行为,
并使用“n”作为缺省值(如果在客户机系统上没有指定 DELIMIDENT 的值)。
在客户机系统上指定没有值的 DELIMIDENT 环境变量要求客户机应用程序使用
DELIMIDENT 设置,这是应用程序编程接口 (API) 的缺省设置。
GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 164 -
不需要任何值;DELIMIDENT 生效(如果它存在的话),且当它在环境变量列表上时
仍然有效。当 DELIMIDENT 在服务器级别设置时,除去此变量需要重新启动服务器。
定界标识可以包含空格(如短语 "Vitamin E"),也可以与 SQL 关键字完全相同(如
"TABLE" 或 "USAGE")。还可使用定界标识来声明包含 SQL 标识的缺省字符集之外的
字符的数据库标识(如“Column #6”)。在缺省语言环境中,此缺省字符集由字母、数字
和下划线 ( _ ) 符号组成。
即使设置了 DELIMIDENT,您也可以使用单引号 ( ' ) 来将权限标识定界为数据库对
象名称的所有者名称部分,如以下示例所示:
RENAME COLUMN 'Owner'.table2.collum3 TO column3;
此示例是一般规则的例外,一般规则是这样的:当设置了 DELIMIDENT 时,SQL 解析
器将以单引号定界的字符串解释为文字串,而将以双引号 ( " ) 定界的字符串解释为 SQL
标识。
数据库标识符(也称为 SQL 标识符)是数据库对象(例如:表和列)的名称。存储器
标识是存储器对象(例如,数据库空间、Blob 空间和智能大对象空间)的名称。不能使用
DELIMIDENT 来声明包含缺省 SQL 字符集以外字符的存储器标识。
定界标识是区分大小写的。要使用定界标识,用 GBase 8s ESQL/C 编写的应用程序必
须在编译时和运行时设置 DELIMIDENT。
重要: 如果尚未设置 DELIMIDENT,应注意对它进行设置可能会导致在定界 SQL 标识
(例如,字符串文字的定界符)之外的上下文中使用双引号 ( " ) 的现有 .sql 脚本或客
户机应用程序出错。如果设置了 DELIMIDENT,那么必须对不是 SQL 标识的定界构造使用
单引号 ( ' ) 而不是双引号。
在使用 C shell 并已设置了 DELIMIDENT 的 UNIX™ 系统上,可通过以下命令禁用此
功能(它会导致双引号之间的任何内容都解释为 SQL 标识):
unsetenv DELIMIDENT