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数据库 - 存储过程)
答案 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
条件。这由解码函数处理。