根据查询结果赋值,只要有查询结果就不报错吗

-一个大坑 2018-03-06 03:31:53

create or replace procedure Happy_test(v_emplid in varchar2) is
v_Ename varchar2(20);
v_cnt number;
begin
--判断是不是有数据,如果查不到数据,执行“ select t.ename into v_Ename from employee t where t.emplid=v_emplid; ”就报错
select count(0) into v_cnt from employee t where t.emplid=v_emplid;
if v_cnt>0 then
--我用空值测试了没报错
select t.ename into v_Ename from employee t where t.emplid=v_emplid;
update employee set cname=v_Ename where t.emplid=v_emplid;
end if;
end Happy_test;
...全文
405 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
-一个大坑 2018-03-07
  • 打赏
  • 举报
回复
引用 3 楼 baidu_36457652 的回复:
判断一下也没什么不好。。 而且 你这个如果有多行的t.emplid=v_emplid也会报错的
这个我也想了,不过emplid是唯一值,不会出现重复
-一个大坑 2018-03-07
  • 打赏
  • 举报
回复
引用 2 楼 sxq129601 的回复:
你后面加个ename is not null 过滤下不就行了
不能加判断,加个ename is not null 过滤,update employee set cname=v_Ename where t.emplid=v_emplid;就不能执行了。就是要ename有值就修改cname的值,没有就修改为空
jdsnhan 2018-03-07
  • 打赏
  • 举报
回复
如果单从示例中内容看,没必要判定。直接写update即可,匹配上就更新,匹配不上就不执行,也不会报错
  • 打赏
  • 举报
回复
判断一下也没什么不好。。 而且 你这个如果有多行的t.emplid=v_emplid也会报错的
sxq129601 2018-03-06
  • 打赏
  • 举报
回复
你后面加个ename is not null 过滤下不就行了
-一个大坑 2018-03-06
  • 打赏
  • 举报
回复
我进去调试了,t.ename为null,into给v_Ename 没有报错,修改也没有报错。我还是不太放心

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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