读书人

没有查询到记录为何SQLCA.SQLCODE=100

发布时间: 2012-03-30 17:32:09 作者: rapoo

没有查询到记录为何SQLCA.SQLCODE=100?
select A.ID,A,XM,B.DW FROM A ,B WHERE A.ID=B.XMID AND B.ID>100;
CONNECT;
DECLARE MY_CUR dynamic CURSOR FOR SQLSA;
PREPARE SQLSA FROM :SQLSTR;
DESCRIBE SQLSA INTO SQLDA;
open dynamic my_cur USING DESCRIPTOR SQLDA;
//若查询失败
IF SQLCA.SQLCODE<0 THEN
RETURN ''
END IF

IF SQLCA.SQLCODE=100 THEN
RETURN '100'
ELSE
RETURN 'ABC'
END IF
————————————————————————————————————

现在查询结果为空(用“select count(*) FROM A ,B WHERE A.ID=B.XMID AND B.ID>100;”,显示count(*)值为“0”)。但是,返回值却是“100”。

为什么呢?

是不是我执行了两遍“SQLCA.SQLCODE”的缘故呢?


[解决办法]
不fetch其实没有执行select呢
你就直接fetch,
然后判断sqlca.sqlcode,在100那个分支写 (执行其他语句)

[解决办法]
可以在=0的分支做个变量累加,在100那个分支判断这个变量有没有增加
有就是执行到最后了
没有增加就是没数据,走你那个执行其他语句

读书人网 >PB

热点推荐