Nie ma if (cursor)
konstrukcja lub rzeczywiście każdy exists
operator w składni PL/SQL. Musisz zrobić coś takiego:
declare
somevar number;
begin
select count(*) into somevar
from table1
where value_desc = 'Indicator'
and value1 = 'Y'
and rownum = 1;
if somevar > 0 then
execute immediate sql_select_yes
else
execute immediate sql_select_no
end;
end;
i rownum =1 warunek jest na wypadek dużej liczby wierszy, ponieważ nie trzeba liczyć ich wszystkich do testu istnienia. (Nie wpłynie to na wynik, jeśli będzie musiał liczyć milion wierszy, to po prostu strata czasu, gdy zależy ci tylko na tym, czy jeden wiersz istnieje.) Możesz również użyć czegoś takiego do sprawdzenia istnienia:
select count(*) into somevar from dual
where exists
( select 1
from table1
where value_desc = 'Indicator'
and value1 = 'Y'
and rownum = 1 );