Няма if (cursor)
конструкция или изобщо exists
оператор в PL/SQL синтаксис. Ще трябва да направите нещо подобно:
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;
и rownum =1 условието е само в случай, че има голям брой редове, тъй като не ви е необходимо да преброите всички за тест за съществуване. (Няма да повлияе на резултата, ако трябва да преброи милион реда, просто е загуба на време, когато ви интересува само дали съществува един ред.) Можете също така да използвате нещо подобно за проверка на съществуването:
select count(*) into somevar from dual
where exists
( select 1
from table1
where value_desc = 'Indicator'
and value1 = 'Y'
and rownum = 1 );