在Oracle 中往往需要的到某些字段的值:
select nvl(sl, 0) into kc
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
如上 是得到 sl 的字段值。有两个问题请教:1-- 如何一次性得到多个字段的值。 select nvl(sl, 0) into kc ,nvl(sl2,0) into kc2,nvl(sl3,0) into kc3
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;以上 写法 总是提示 找不到 from ,不知道是不是 plsql 的版本 所引起的。
还是 这样的写法不对,如果不对的话,正确的写法 该如何写?2-- 在以上的取值过程中, 如果存在 这条记录 取值才成功,但是如果不存在 这条记录的情况下, select nvl(sl, 0) into kc
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
写法 执行的过程中总是报错。为了避免 出错,查找之前总是判断 是否有记录存在:
select nvl(sum(count(*)),0) into KC
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode
group by ckcode,ljbh;
if KC>0 then
select nvl(sl, 0) into kc
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
else
kc:=0;
end if;但是 这样写严重的影响效率,如何 避免以上 的错误发生,又不影响 效率。期待 各位高手回复。
select nvl(sl, 0) into kc
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
如上 是得到 sl 的字段值。有两个问题请教:1-- 如何一次性得到多个字段的值。 select nvl(sl, 0) into kc ,nvl(sl2,0) into kc2,nvl(sl3,0) into kc3
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;以上 写法 总是提示 找不到 from ,不知道是不是 plsql 的版本 所引起的。
还是 这样的写法不对,如果不对的话,正确的写法 该如何写?2-- 在以上的取值过程中, 如果存在 这条记录 取值才成功,但是如果不存在 这条记录的情况下, select nvl(sl, 0) into kc
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
写法 执行的过程中总是报错。为了避免 出错,查找之前总是判断 是否有记录存在:
select nvl(sum(count(*)),0) into KC
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode
group by ckcode,ljbh;
if KC>0 then
select nvl(sl, 0) into kc
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
else
kc:=0;
end if;但是 这样写严重的影响效率,如何 避免以上 的错误发生,又不影响 效率。期待 各位高手回复。
解决方案 »
- oracle在job的使用问题
- oracle数据库远程连接问题
- 访问数据提示ora-12170 连接超时,操作超时
- 请教高手,需要group by的字段需要经函数处理应该怎么做?
- 30分求高手帮忙一个算法问题(Oracle),用decode做的最好。
- oracle 11i能在windows server 2008上安装吗?
- 郁闷中,关于order by 查询效率的问题。。。
- 怎么在insert 里插入已有记录的值?
- 1000分,调查,两年以上工作经验 的程序员最想学习什么知识,各个论坛都有,谢谢!
- oracle 定时触发
- 求助truncate后,index怎么恢复
- 先备份数据库,然后在数据库中增加n条记录,然后还原刚才备份的数据库,可发现增加的n条记录仍然存在
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
select nvl(sl, 0),nvl(sl2,0),nvl(sl3,0) into kc ,kc2,kc3
from hd_b_ljkcmx
where ckcode = GET_CODE_TDJ_KC_Info.ckcode ;
是最简洁的写法。
谢谢:yuyu 1980但是: 这样写的话,如果有一个值 找不到的话,也会报错。该如何处理?
做异常处理EXCEPTION
WHEN NO_DATA_FOUND THEN
return 0.00; 就不会报错了!
WHEN NO_DATA_FOUND THEN
null;或者根据情况做别的处理是不是更妥当?