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

调试PROC*C程序时,SQL语句执行信息都存放在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

oraca是oracle提供的另一个通信区
oraca算是sqlca的补充和辅助,当需要更进一步的信息时,oraca

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值