CONNECTION_NAME 域的内容
CONNECTION_NAME 域包含依赖于先前执行的 CONNECT、SET CONNECTION、
DISCONNECT 或 DISCONNECT ALL 语句的连接信息。
在您执行下列语句之后,CONNECTION_NAME 域包含不同的信息
执行的语句 CONNECTION_NAME 域内容 CONNECT 包含连接或未连接的连接名称,在 CONNECT 语句中指定。对于无当前 连接或缺省连接,该区域为空白。 SET CONNECTION 包含切换或未切换的连接名称,在 SET CONNECTION 语句中指定。 DISCONNECT 包含断开连接或未断开连接的连接名称,在 DISCONNECT 语句中指定。 如果您成功地断开连接,然后执行非当前连接的 DISCONNECT 语句,则 CONNECTION_NAME 域保持不变。 DISCONNECT ALL 如果成功地执行 DISCONNECT ALL 语句,则不包含信息。如果未成功地 执行该语句,则 CONNECTION_NAME 与包含在 CONNECT 语句中指定 的未断开连接的所有连接的名称。然而,此信息不意味着连接仍存在。
如果 CONNECT 成功,则 CONNECTION_NAME 取这些值之一:
• 在 CONNECT 语句中指定的数据库环境的名称,如果 CONNECT 语句不包括 AS 子句
• 连接的名称(在 AS 关键字之后声明了的标识符),如果 CONNECT 语句包括 AS 子句
使用 GET DIAGNOSTICS 进行错误检查
GET DIAGNOSTICS 从诊断区域中的各种域返回值。对于您想要访问的诊断区域中的每一域,必 须支持兼容数据类型的主变量。
下列示例展示如何使用 GET DIAGNOSTICS 语句来显示错误信息。该示例展示名为
disp_sqlstate_err( ) 的 GBase 8s ESQL/C 错误显示例程:
void disp_sqlstate_err() { int j; EXEC SQL BEGIN DECLARE SECTION; int exception_count; char overflow[2]; int exception_num=1;
char class_id[255];
char subclass_id[255];
char message[255];
int messlen;
char sqlstate_code[6];
int i;
EXEC SQL END DECLARE SECTION;
printf("---------------------------------");
printf("-------------------------\n");
printf("SQLSTATE:
printf("SQLCODE: %d\n", SQLCODE);
printf("\n");
EXEC SQL get diagnostics :exception_count = NUMBER,
:overflow = MORE;
printf("EXCEPTIONS: Number=%d\t", exception_count);
printf("More? %s\n", overflow);
for (i = 1; i <=>




