Non c'è if (cursor)
costruzione o addirittura qualsiasi exists
operatore nella sintassi PL/SQL. Dovrai fare qualcosa del genere:
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;
e rownum =1 la condizione è solo nel caso in cui ci sia un numero elevato di righe, poiché non è necessario contarle tutte per un test di esistenza. (Non influirà sul risultato se deve contare un milione di righe, è solo una perdita di tempo quando ti interessa solo se esiste una riga.) Potresti ugualmente usare qualcosa del genere per il controllo dell'esistenza:
select count(*) into somevar from dual
where exists
( select 1
from table1
where value_desc = 'Indicator'
and value1 = 'Y'
and rownum = 1 );