使用SQLCA结构

SQLCA(SQL Communications Area)是一个结构体,定义在头文件sqlca.h 中,文件sqlca.h 会被预编译器esql*C 自动添加到生成的C 文件中,所以无需用户声明SQLCA 结构体,用户可以通过该结构很容易地获得当前SQL 语句的执行状态信息。

SQLCA 结构体为:

struct sqlca

{

char sqlcaid[8];

long sqlabc;

long sqlcode;

struct

{

int sqlerrml;

char sqlerrmc[70];

} sqlerrm;

char sqlerrp[8];

long sqlerrd[6];

char sqlwarn[8];

char sqlext[8];

char sqlstate[6];

};

SQLCA 结构体成员变量:

sqlcaid 成员变量:

用于存储验证SQLCA 结构体的标示信息,初始化信息为''SQLCA ''。

sqlabc 成员变量:

用于存储SQLCA 结构体的数据类型长度(sizeof(struct sqlca))。

sqlcode 成员变量:

与SQLCODE 的使用方法相同,完成的功能也是一样的,用户可以在源代码中输入sqlca.sqlcode对它进行访问,访问方式和SQLCODE相同。

sqlerrm成员变量:

它有两个成员,sqlerrml 用于存储错误信息的实际长度,sqlerrmc 用于存储错误信息,sqlerrmc 没有字符串的结束标示符'\0',需要通过sqlerrml 来确定。

sqlerrp 成员变量

保留将来使用。

sqlerrd 成员变量

sqlerrd[1] 和sqlerrd[3]分别用于存储命令操作的元组编码的低32位和高32位(如果存在的话)。

sqlerrd[2] 用于存储insert ,update, delete 操作的元组数。

sqlwarn成员变量

该成员变量主要用来存放程序中出现的warning信息。

sqlwarn[1] 如果返回字符串在存放到主变量时被截断,则sqlwarn[1]为'W';

sqlwarn[2] 如果程序执行过程中出现warning信息,则sqlwarn[2]为'W';

sqlwarn[0] 如果以上两项有一个为'W',则sqlwarn[0]为'W'。

sqlwarn[3]~sqlwarn[7] 保留将来使用。

sqlext 成员变量

保留将来使用。

sqlstate 成员变量

用于存储SQLSTATE 的当前状态值,与SQLSTATE 的用法一样,用户可以在源代码中输入sqlca.sqlstate对它进行访问。