Netezza while 循环语法
Netezza while loop syntax
我想在 netezza 中做一个声明,以便它等到声明正确后再继续。任何帮助将不胜感激 - 类似于下面的内容
WHILE (
select count(*) EVENT_DESCRIPTION from TEST_DA_CONTROL.CTRL.C_DBA_MAINTENANCE_AUDIT
where EVENT_DESCRIPTION = 'STARTED' and DATETIME_LOGGED > (select add_months(current_date,0))) = 0
LOOP
wait 5
end loop;
但我不知道正确的语法。
最好将该输出分配给一个变量。我似乎记得在 nzplsql 中从 execute immediate
中获取数据有点费力,但是已经有方便的变量可供您使用。这里我将使用 ROW_COUNT
.
declare
event_descriptions int;
sql varchar;
begin
event_descriptions := 1;
while event_descriptions > 0 loop
--Actual work
sql := '
select * EVENT_DESCRIPTION from TEST_DA_CONTROL.CTRL.C_DBA_MAINTENANCE_AUDIT
where EVENT_DESCRIPTION = ''STARTED'' and DATETIME_LOGGED > (select add_months(current_date,0))) = 0;';
execute immediate sql;
event_descriptions := ROW_COUNT;
end loop;
end;
我想在 netezza 中做一个声明,以便它等到声明正确后再继续。任何帮助将不胜感激 - 类似于下面的内容
WHILE (
select count(*) EVENT_DESCRIPTION from TEST_DA_CONTROL.CTRL.C_DBA_MAINTENANCE_AUDIT
where EVENT_DESCRIPTION = 'STARTED' and DATETIME_LOGGED > (select add_months(current_date,0))) = 0
LOOP
wait 5
end loop;
但我不知道正确的语法。
最好将该输出分配给一个变量。我似乎记得在 nzplsql 中从 execute immediate
中获取数据有点费力,但是已经有方便的变量可供您使用。这里我将使用 ROW_COUNT
.
declare
event_descriptions int;
sql varchar;
begin
event_descriptions := 1;
while event_descriptions > 0 loop
--Actual work
sql := '
select * EVENT_DESCRIPTION from TEST_DA_CONTROL.CTRL.C_DBA_MAINTENANCE_AUDIT
where EVENT_DESCRIPTION = ''STARTED'' and DATETIME_LOGGED > (select add_months(current_date,0))) = 0;';
execute immediate sql;
event_descriptions := ROW_COUNT;
end loop;
end;