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那个分支判断这个变量有没有增加
有就是执行到最后了
没有增加就是没数据,走你那个执行其他语句