如何在存储过程中查找选择结果

时间:2012-02-20 05:45:00

标签: sql oracle

select count(*) into dup_row_count from tablea ;

if dup_row_count is not null then
  total_row_count :=1;
else
  total_row_count :=2;
end if;

在上面的查询中,如果select语句中没有数据,则if else条件不起作用。

请你帮我看看如何找到选择查询给出任何结果,以便在此基础上我可以改变我的if else条件。 (Oracle数据库 - 存储过程)

2 个答案:

答案 0 :(得分:3)

COUNT(*)永远不会返回NULL。

select count(*) 
  into dup_row_count 
  from tablea ;
如果表中没有行,

将返回0。所以你希望你的IF语句类似于

if dup_row_count > 0 then
  total_row_count :=1;
else
  total_row_count :=2;
end if;

如果你关心的是否有任何行,那么做一些像

这样的事情会更有效率
select count(*) 
  into dup_row_count 
  from tablea 
 where rownum < 2;

这样数据库一旦找到第一个就可以停止对行进行计数。

答案 1 :(得分:1)

您可以修改SQL,如下所示

select decode(count(*),0,2,1) 
  into dup_row_count 
  from tablea ;

在这种情况下,您不需要if... else条件。这由解码函数处理。