当前位置: 代码迷 >> PB >> 没有查询到记录为何SQLCA.SQLCODE=100?该如何处理
  详细解决方案

没有查询到记录为何SQLCA.SQLCODE=100?该如何处理

热度:232   发布时间:2016-04-29 09:42:32.0
没有查询到记录为何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那个分支判断这个变量有没有增加
有就是执行到最后了
没有增加就是没数据,走你那个执行其他语句
  相关解决方案