应该有一个脚本检查一个表中的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;
答案 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;