有没有查询是否存在记录的好的方法?

derris 2002-11-29 11:06:43
在存储过程中经常需要检索其他表的数据插入到特定的表。
可是如果select语句没有检索到结果,就会触发oracle异常,停止执行以后的脚本。
(有没有办法让其继续执行啊,就算处理了异常,以后的脚本也不执行)
所以需要select以前判断是否存在记录:
select count(*) into tmpCount from tablename where .... and rownum < 2;
if tmpCount > 0 then ..
不知道这种方法是否合适?有没有更高效率的方法?
...全文
22 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hanson_bati_zhu 2002-11-29
  • 打赏
  • 举报
回复
snowy_howe的办法是一个很常用的路子
我很奇怪为什么大家都用
SELECT COUNT(1)这个办法
明明可以用游标来处理吗


—————————————————————————————————
该死的CSDN,把旧帖子都TMD删了,气死我了!!!

bzszp 2002-11-29
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1196/1196592.xml?temp=.7349359
上次测试的不准确,谁来测试一下
snowy_howe 2002-11-29
  • 打赏
  • 举报
回复
还有一种思路,效率也没测试过,是在外国一个产品中偷学的。
declare
cursor c_exist is
select 'x' from tablename where ......;
begin
...
open c_exist;
loop
if c_exist%notfound then
....
else
...
end if;
end loop;
end;
大家发表点看法吧!
huangcaibing 2002-11-29
  • 打赏
  • 举报
回复
select count(1) into tmpCount from tablename where .... and rownum < 2;

应该用这种方法
jlandzpa 2002-11-29
  • 打赏
  • 举报
回复
select count(1) into tmpCount from tablename where .... and rownum < 2;
肯定比你的快.
bzszp 2002-11-29
  • 打赏
  • 举报
回复
以前讨论过这个问题,一般就是用这种方法,效率到是没测试过

17,377

社区成员

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

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