在执行一个Pro*C语句后,可以通过下面的语句实现保存执行成功的行数。
@rowcount = sqlca.sqlerrd[2];
使用内嵌SQL语句时的用法:
(1)、select into 数组的时候,
当记录数<数组长度时,sqlcode返回1403
当记录数=数组长度时,sqlcode返回0
当记录数>数组长度时,sqlcode返回-2112(返回太多行)
(3)、select into 数组时
首先判断sqlca.sqlerrd[2] > 0 成功
另外判断 sqlca.sqlcode=-2112为数组越界
然后判断 sqlca.sqlcode<0 为失败
select into 单个值
首先判断 sqlca.sqlcode<0 为失败
然后判断sqlca.sqlcode=1403没有查出数据
否则成功。
(4)、select into 一个变量时,如果为NULL
如果为数值型,则不覆盖原来变量的值。
如果为字符串时,则将变量置为NULL。
出错不覆盖原来变量的值。
(5)、select sum()等计算列 into
有符合条件的记录时 :sqlca.sqlcode=0,sqlca.sqlerrd[2]=1
没有符合条件的记录时 :sqlca.sqlcode=0,sqlca.sqlerrd[2]=1
所以要同时 select count(*) into :变量来判断有无存在的记录。
(6)、insert into
违反唯一约束条件 sqlca.sqlcode=-1
(7) 对于oracle数据库中date型字段,select 时使用to_char,
insert 时使用 to_date()。
说明:
sqlca.sqlerrd[2]当sql语句成功时,保存当前sql语句处理的行数.
对于execute,insert,update,delete,select into反映成功处理的函数
在open语句执行时,sqlerrd[2]置为0,在fetch后增值.