使用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对它进行访问。