存储过程编译提示:未找到数据,如何解决

xiej0810 2006-05-18 12:06:00
NCLASS 是在过程中定义的字符型变量,tuic是给存储过程传入的参数
SELECT YLDWCLASS INTO NCLASS
FROM PCB_WORKYIELD A,BUFAPAO B WHERE YLDWORKING='5010' AND YLDDATE=TO_CHAR(SYSDATE,'YYYY-MM-DD')
AND YLDSESSION>TO_CHAR(SYSDATE-23/24,'HH24') AND ROWNUM=1 AND YLDWTEAM=B.NTEAM AND B.PROSNBEFORE=tuic;
该语句中由于可能会查不到满足的行,造成语句出现异常,本来想用CASE语句:
SELECT CASE WHEN YLDWCLASS IS NOT NULL THEN YLDCALSS ELSE 'D' END INTO NCLASS
FROM PCB_WORKYIELD A,BUFAPAO B WHERE YLDWORKING='5010' AND YLDDATE=TO_CHAR(SYSDATE,'YYYY-MM-DD')
AND YLDSESSION>TO_CHAR(SYSDATE-23/24,'HH24') AND ROWNUM=1 AND YLDWTEAM=B.NTEAM AND B.PROSNBEFORE=tuic;
但编译不通过,并且这样也不对,因为这种情况是查到了行了,只是字段值为空,和我想要的结果不一样

请各位高手予以指点!!!不够分在加!!
...全文
215 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoqingbo 2006-05-19
  • 打赏
  • 举报
回复
同意楼上的做法
用select into 如果没有值肯定会出现异常,利用异常可以处理
另外
你可以将select into 写成游标来就不用管异常了。
只当游标%found时继续处理
kingofworl 2006-05-19
  • 打赏
  • 举报
回复
exception
when NO_DATA_FOUND then
null;
end;
通常大家都在异常中处理
qiaozhiwei 2006-05-18
  • 打赏
  • 举报
回复
可以写在
begin
....
exception
when NO_DATA_FOUND then
null;
end;

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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