4.5 GBase 8s 产品中的环境变量
下面的主题讨论(以字母顺序)GBase 8s 数据库服务器产品以及它们的实用程序使用
的环境变量。
重要: 下列环境变量的描述包括在 UNIX™ 上设置环境变量的语法。
4.5.1 ANSIOWNER 环境变量
在符合 ANSI 标准的数据库中,您可通过将 ANSIOWNER 环境变量设置为 1 来防止发
生在没有用引号定界的所有者名称中小写字母转换成大写字母的缺省行为。

要防止符合 ANSI 标准的数据库中所有者名称的小写字母转换成大写字母,必须在初
始化 GBase 8s 之前设置 ANSIOWNER。
下表显示了符合 ANSI 标准的 GBase 8s 数据库如何存储或读取称为 oblong 的数据
库对象的指定名称(如果您是 oblong 的所有者并且您的 userid(全部用小写字母)为
owen):
表 1. 隐式的、未加引号的和加引号的所有者名称的字母大小写,有或者无 ANSIOWNER
所有者格式 规范 ANSIOWNER = 1 未设置 ANSIOWNER
隐式: oblong owen.oblong OWEN.oblong
未加引号: owen.oblong owen.oblong OWEN.oblong
加引号: 'owen'.oblong owen.oblong owen.oblong
因为它们不匹配您的 userid 的字母大小写,所以指定了格式(存储为 OWEN.oblong)
的任何 SQL 语句都将失败并出错。
4.5.2 CPFIRST 环境变量
使用 CPFIRST 环境变量,可以为您的编程环境中的所有 GBase 8s ESQL/C 源文件指
定缺省编译顺序。

在未设置 CPFIRST 的情况下编译 GBase 8s ESQL/C 程序时,在缺省情况下,GBase 8s
ESQL/C 预处理器首先在程序源文件上运行,然后将结果文件传递给 C 语言预处理器和编
译器。但是,可以以下顺序编译 GBase 8s ESQL/C 程序源文件:
1. 运行 C 预处理器
2. 运行 GBase 8s ESQL/C 预处理器
3. 运行 C 编译器和链接程序
要对特定程序使用非缺省编译顺序,可对程序源文件指定 .ecp 扩展名,对具有 .ec 扩
展名的程序源文件运行 esql 命令的 -cp 选项,或设置 CPFIRST。
将 CPFIRST 设置为 TRUE(仅大写),以便在对您所在环境中的所有 GBase 8s
ESQL/C 源文件运行 GBase 8s ESQL/C 预处理器之前运行 C 预处理器,而不管 -cp 选项
是否已传递到 esql 命令,或者这些源文件是否具有 .ec 或 .ecp 扩展名。
要对其中 CPFIRST 环境变量已设置为 TRUE 的系统复原缺省顺序,可将 CPFIRST 设
置为 FALSE。在支持 C shell 的 UNIX™ 系统上,以下命令具有相同的作用:
Unsetenv CPFIRST

path/file_name 是连接管理器配置文件的完整路径和文件名。
如果未设置 CMCONFIG 环境变量,且未在 oncmsm 实用程序命令行上指定配置文件名,
那么连接管理器将尝试装入具有以下路径和文件名的文件:
$GBASEDBTDIR/etc/cmsm.cfg
示例
假定 CMCONFIG 环境变量指向连接管理器配置文件的有效路径和文件名。要使用
shell 环境中指定的配置文件重新装入连接管理器实例,请输入以下命令:
./oncmsm -r
要使用 shell 环境中指定的配置文件关闭连接管理器实例,请输入以下命令:
./oncmsm -k
4.5.4 DBACCNOIGN 环境变量
使用 DBACCNOIGN 环境变量,可以指定在发生指定的错误时 DB-Access 实用程序的行
为。
如果在以下某种情况下发生错误,那么 DBACCNOIGN 环境变量会影响 DB-Access 实用
程序的行为:
• 以非菜单方式运行 DB-Access。
• 仅在 GBase 8s 中,以菜单方式通过 DB-Access 执行 LOAD 命令。
如果在上述任一情况下运行 DB-Access 实用程序时发生错误,请将 DBACCNOIGN 环境
变量设置为 1,以回滚未完成的事务。

例如,假定 DB-Access 运行以下 SQL 命令:
DATABASE mystore
BEGIN WORK
INSERT INTO receipts VALUES (cust1, 10)
INSERT INTO receipt VALUES (cust1, 20)
INSERT INTO receipts VALUES (cust1, 30)
UPDATE customer
SET balance =
(SELECT (balance-60)
FROM customer WHERE custid = 'cust1')
WHERE custid = 'cust1
COMMIT WORK
此处有一条语句的表名拼写错误:receipt 表不存在。如果未在环境中设置
DBACCNOIGN,那么 DB-Access 会将两条记录插入到 receipts 表中,并更新 customer
表。现在 customer balance 的减少量超过了插入的 receipts 的总和。
但如果将 DBACCNOIGN 设置为 1,那么会打开消息,指示 DB-Access 回滚了所有
INSERT 和 UPDATE 语句。这些消息还会标识错误原因,以便您能够解决问题。
设置 DBACCNOIGN 时的 LOAD 语句示例
可在执行 LOAD 语句期间设置 DBACCNOIGN 环境变量来保护数据完整性,即使
DB-Access 以菜单方式运行 LOAD 语句也是如此。
假定您从 DB-Access SQL 菜单执行 LOAD 语句。正确装入了 49 行数据,但第 50
行数据包含无效值,因而导致错误。如果将 DBACCNOIGN 设置为 1,那么数据库服务器
不会将先前的 49 行插入到数据库中。如果未设置 DBACCNOIGN,那么数据库服务器会
插入前 49 行。
4.5.5 DBANSIWARN 环境变量
使用 DBANSIWARN 环境变量,可以指示您希望执行 ANSI 标准 SQL 语法的 GBase 8s
扩展检查。
与大多数环境变量不同,您不需要为 DBANSIWARN 设置值。您可以将其设置为任何
值,也可以不设置任何值。

在设置了 DBANSIWARN 的情况下运行 DB-Access,与在从命令行调用 DB-Access
(或可识别 -ansi 标志的任何 GBase 8s 产品)时加上 -ansi 标志具有同等功效。如果在
运行 DB-Access 之前设置了 DBANSIWARN,那么任何语法扩展警告都将显示在屏幕上
的 SQL 菜单内。
在运行时,如果所执行的语句被识别为包含 SQL 语法 ANSI/ISO 标准的任何 GBase
8s 扩展,那么 DBANSIWARN 环境变量会导致 SQL 通信区 (SQLCA) 中 sqlwarn 数组
的第六个字符设置为 W。
有关 SQLCA 的详细信息,请参阅 GBase 8s ESQL/C 程序员手册。
在设置 DBANSIWARN 之后,GBase 8s 扩展检查会自动进行,直到您注销或取消设置
DBANSIWARN。要关闭 GBase 8s 扩展检查,可通过以下命令禁用 DBANSIWARN:
unsetenv DBANSIWARN




