esql/c (5)
zjpwm 2003-08-20 01:09:54 第 五 章 错误检测和恢复
本章我们介绍如何使用USERCA来进行错误检测和处理。
5.1 USERCA的结构
USERCA是ESQL程序用来传送执行信息的结构,每执行完一条执行性SQL语句, COBASE都把执行信息写入USERCA中,对于说明性SQL语句,则无执行信息.谨慎的程序员应该在每一SQL语句执行完成后,检查USERCA结构中内容来确信语句的执行是否成功,并根据其中的信息作适当的处理.在ESQL中,USERCA的结构如下:
typedef struct
char caid[10]; /* userca ID */
long calen; /* userca length */
long sqlcode; /* sql code */
long sqltype; /* sql statement type */
int sqlerrmlen; /* sql error message length */
char sqlerrmtext[80]; /* sql error message text */
int sqlreturnflag; /* sql return flag(def or data) */
long sqlpl; /* sql process lines (per fetch st) */
long sqlcoml; /* sql communication lines (per com) */
long sqltotal; /* select_total_lines */
char sqlwarn[7]; /* sql warnning flag */
short sqlstsave; /* sql_statement_save flag */
user_com_area;
struct user_com_area userca;
该结构的各元素的意义描述如下:
userca.caid 通讯区标识.
userca.calen 通讯区长度.
userca.sqlcode 记录每一SQL语句执行完成情况.其取值如下:
0 表示执行成功.
2000 表示没有返回行或最后一行已取完.
userca.sqltype SQL语句的类型.
userca.sqlerrmlen 执行SQL语句错误 信息的长度.
userca.sqlerrmtext 执行SQL语句错误 信息的正文.
userca.sqlreturnflag
userca.sqlpl
userca.sqlcoml
uaseca.sqltotal
userca.sqlwarn
userca.sqlwarn[0] 警告检查位;
userca.sqlwarn[1] 返回值截断警告;
userca.sqlwarn[2] 在集函数中忽略空值警告;
userca.sqlwarn[3] SELECT_LIST 个数与 INTO 子句项
个数不符的警告;
userca.sqlwarn[4] DML操作涉及每一行的警告;
userca.sqlwarn[5] SQL语句引起事务回滚的警告;
userca.sqlwarn[6] DELETE语句对于FOR_UPDATE的行操作警告;
userca.sqlstsave