sql >> Databasteknik >  >> RDS >> Oracle

SQL lagrad procedur för att kontrollera värdet ja/nej i en tabell och köra sql

Det finns ingen if (cursor) konstruktion eller faktiskt någon exists operator i PL/SQL-syntax. Du måste göra något i stil med detta:

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;

och radnummer =1 skick är bara om det finns ett stort antal rader, eftersom du inte behöver det för att räkna alla för ett existenstest. (Det kommer inte att påverka resultatet om det måste räknas en miljon rader, det är bara ett slöseri med tid när du bara bryr dig om en rad finns.) Du kan lika gärna använda något sådant här för existenskontrollen:

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


  1. Händelser och trådar i .NET

  2. SQL - hur man väljer flera tabeller och JOIN flera rader från samma kolumn?

  3. Vad är skillnaden mellan precision och skala?

  4. Google Maps API v3 kryssruta / filterdatabas