Oracle
 sql >> Database >  >> RDS >> Oracle

Procedura memorizzata SQL per verificare il valore sì/no in una tabella ed eseguire sql

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 );