用于检查表中数据可用性的PLSQL循环

时间:2015-03-25 19:45:35

标签: loops plsql

应该有一个脚本检查一个表中的count(),如果count()为NULL然后退出,则休眠一段时间,然后再次检查表,而count(*)是空值。我的努力是徒劳的:

declare

    v_cnt pls_integer;

begin

    while v_cnt >0 
    loop

        select count(*) into v_cnt from TestTable;

        if v_cnt is Null
        then
            exit;
        else 
            dbms_lock.sleep(6);
            dbms_output.put_line('Count is greater then Null. Current values: ' || v_cnt);

    end loop;

    dbms_output.put_line('TestTable does not have any data');

end;

1 个答案:

答案 0 :(得分:1)

Count始终返回一个数字,而不是null。将if更改为零而不是null,它应该工作。我改变了你的逻辑,所以如果没有记录,它就不会启动。除非您从表中删除记录,否则我认为没有任何记录只会发生一次。如果您要删除记录并且表可能多次没有记录,那么请使用随意运行的作业关闭此过程并删除while循环。

declare
v_cnt pls_integer;
begin
select count(*) into v_cnt from TestTable;
if v_cnt > 0 then
   while v_cnt > 0 
   loop
      select count(*) into v_cnt from TestTable;
      dbms_lock.sleep(6);
      dbms_output.put_line('Count is greater than zero . Current values: ' || v_cnt);
   end loop;

else
   dbms_output.put_line('TestTable does not have any data');

 end if;
end;