DB2 - 求声明或打开游标时的SQLCODE值情况,以及这时候怎么判断游标中是否有记录

wmr0324 2009-09-03 05:35:01
急急急!

在EXEC SQL DECLARE CURSOR和EXEC SQL OPEN CURSOR时,成功SQLCODE返回0
失败的时候有那些情况呢,各种情况的SQLCODE值为多少呢?

在声明和打开游标的时候能否判断该游标是否有数据记录,怎么判断呢?
...全文
566 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmr0324 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mr_bean 的回复:]
SQL code/*找到该出库单信息,如果不存在,则退出*/exec sqlselectcount(CKDBH)into :vNUMfrom T_CKDwhere CorpID=:vCorpIDand ckdbh=:vCKDBH;if (vNUM==0)
{*(long*)(inout_sqlda->sqlvar[3].sqldata)=1;goto error_exit;
}
[/Quote]

谢谢
但我不想用查询语句来判断,万一查询语句也出错了呢
quiettown 2009-09-09
  • 打赏
  • 举报
回复
declare continue handler for not found
set l_error = '00000';
这里是有判断啊,当使用游标为空,会报数据未找到错误,这时过程忽略继续,能不能满足?
wmr0324 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 quiettown 的回复:]
不太明白,是在说异常处理么?

SQL codedeclare sqlstatechar(5)default'00000';declare l_errorchar(5)default'00000';declare sqlcodeintegerdefault0;declare l_sqlcodeintegerdefault0;declarecontinue handlerfornot foundset l_error='00000';declarecontinue handlerfor sqlexception, sqlwarningbeginvalues (sqlstate, sqlcode)into l_error, l_sqlcode;rollback;end;


[/Quote]
在说是否可以在声明或打开游标的时候判断游标是否有记录
quiettown 2009-09-09
  • 打赏
  • 举报
回复
不太明白,是在说异常处理么?


declare sqlstate char(5) default '00000';
declare l_error char(5) default '00000';
declare sqlcode integer default 0;
declare l_sqlcode integer default 0;

declare continue handler for not found
set l_error = '00000';
declare continue handler for sqlexception, sqlwarning
begin
values (sqlstate, sqlcode) into l_error, l_sqlcode;

rollback;
end;



Mr_Bean 2009-09-03
  • 打赏
  • 举报
回复
/*找到该出库单信息,如果不存在,则退出*/
exec sql select count(CKDBH) into :vNUM from T_CKD where CorpID=:vCorpID and ckdbh=:vCKDBH;
if (vNUM==0)
{
*(long *)(inout_sqlda->sqlvar[3].sqldata)=1;
goto error_exit;
}

5,888

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧