Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Gespeicherte SQL-Prozedur, um den Wert ja/nein in einer Tabelle zu prüfen und SQL auszuführen

Es gibt kein if (cursor) Konstruktion oder überhaupt exists Operator in PL/SQL-Syntax. Sie müssen etwa so vorgehen:

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;

Die und rownum =1 Bedingung ist nur für den Fall, dass es eine große Anzahl von Zeilen gibt, da Sie sie nicht benötigen, um alle für einen Existenztest zu zählen. (Es wird das Ergebnis nicht beeinflussen, wenn es eine Million Zeilen zählen muss, es ist nur Zeitverschwendung, wenn Sie sich nur darum kümmern, ob eine Zeile existiert.) Sie könnten auch so etwas für die Existenzprüfung verwenden:

select count(*) into somevar from dual
where  exists
       ( select 1
         from   table1
         where  value_desc = 'Indicator'
         and    value1 = 'Y'
         and    rownum = 1 );