2016-09-02 8 views
0

Я хочу сделать заявление в netezza так, чтобы оно дождалось, пока инструкция не станет правильной, прежде чем продолжить. Любая помощь была бы оценена - что-то похожее на нижеСинтаксис Netezza while loop

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; 

но я не знаю правильного синтаксиса.

ответ

0

Лучше назначить этот выход переменной. Я, кажется, помню, что получение данных из execute immediate немного труднее в nzplsql, но есть удобные переменные, которые уже доступны для вас. Здесь я буду использовать 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;