Oracle pro*c/c++通讯区 sqlca oraca

调试PROC*C程序时,SQL语句执行信息都存放在sqlca和oraca中

目录

sqlca 结构定义 字段说明 oraca 结构定义 字段说明

sqlca

sqlca是ORACLE提供的两个通信区之一。
sqlca实际上是一个结构变量,其目的是为了诊断错误和保存事件处理结果
sqlca中包含了sql语句运行时信息:
1. Oracle错误码
2. 警告信息
3. 事件信息
4. 处理的记录集行计数
5. 诊断信息

结构定义

struct   sqlca
         {
         /* ub1 */ char    sqlcaid[8];
         /* b4  */ int     sqlabc;
         /* b4  */ int     sqlcode;
         struct
           {
           /* ub2 */ unsigned short sqlerrml;
           /* ub1 */ char           sqlerrmc[70];
           } sqlerrm;
         /* ub1 */ char    sqlerrp[8];
         /* b4  */ int     sqlerrd[6];
         /* ub1 */ char    sqlwarn[8];
         /* ub1 */ char    sqlext[8];
         };
#ifdef  SQLCA_INIT
         = {
         {'S', 'Q', 'L', 'C', 'A', ' ', ' ', ' '},
         sizeof(struct sqlca),
         0,
         { 0, {0}},
         {'N', 'O', 'T', ' ', 'S', 'E', 'T', ' '},
         {0, 0, 0, 0, 0, 0},
         {0, 0, 0, 0, 0, 0, 0, 0},
         {0, 0, 0, 0, 0, 0, 0, 0}
         }

字段说明

sqlcaid:
标识SQL通讯区,被初始化唯sqlca sqlabc:
包含sqlca结构的长度(以字节为单位) sqlcode:
最近执行的SQL语句的状态码
0:正确执行 ;>0:执行了语句,但没有记录行返回;<0:数据库,系统,网络故障,SQL语句没有执行 sqlerrml:
sqlerrmc数组的实际文本长度 sqlerrmc:
与sqlcode一致的对应的错误信息文本 只有当sqlcode<0才能访问,否则是上次错误信息 sqlerrp:
保留字段,没有使用 sqlerrd:
[0],[1],[3],[5]没有使用 sqlerrd[2]SQL语句处理的行数,如果SQL执行失败,则没有定义 ;[4]出现语法分析错误的字符开始位置,位置从0开始 sqlwarn
警告标记
[0]其他警告标记设置,该标记就被设置
[1]字段值被截断输出到宿主变量的时候被设置
[2]没有使用
[3]查询字段个数不等于宿主变量个数的时候被设置
[4]表中记录被没有where子句的delete,update处理的时候被设置
[5]当EXEC SQL CREATE{PROCDURE|FUNCTION|PACKAGE}语句编译错误的时候被设置
[6],[7]没有被使用 sqlext
没有被使用

oraca

结构定义

字段说明

栏目
728_90 cn stocks