SQLCA.SQLCODE 是否等于 STATUS ?
因 sqlca.sqlcode 系用以沟通 front end 和 back end ,因此只有 I/O 发生时才会更改 sqlca ,同时 status 也被设定等于 sqlca.sqlcode 值。
但若只是纯粹 front end 的动作(如 display),则只有 status 会被设定,而sqlca.sqlcode 则保持不变。
为了避免错误,要注意下列两件事: (status 可被其它功能改变,如Display,SQLCA.SQLCODE则不会)
若要以 status 判断 I/O 是否成功,在 I/O 后立即判断 status,中间不可插入任何会更改 status 之指令。
若要以 sqlca.sqlcode 判断 I/O 是否成功,在 I/O 后除非有新的 I/O 发生,不然允许先执行其它 frint end 之指令,以后再予以判断.
总结一下就是,sqlca.sqlcode 是记录SQL的状态,跟随SQL后面比较多。
STATUS 记录各种状态(范围比sqlca.sqlcode广),一句let xx=yy 也会改动 STATUS的状态,但sqlca.sqlcode不会。因为这句不让数据库语句。
SQLERRD[3]:处理资料的笔数;
SQLERRD[2]:新增时 SERIAL 字段所传回之值;
SQLERRD[6]:最后一个 ROWID 值;
SQLAWARN[1]:若第2至第8字符中任意一个被设成”W”,则此字符亦为 “W”,否则为空白;
SQLAWARN[2]:若资料太长而被截掉时,会被设成 “W”;
SQLAWARN[3]:若 aggregate function(如 SUM,AVG,MAX,MIN) 处理时遇到 NULL 值,则会被设成”W”;
SQLAWARN[4]:若查询时,若欲查询的字段数目和 INTO 之变量数目不合时,会被设成 “W”;用法:if sqlca.sqlerrd[6] then