sql >> Database >  >> RDS >> Oracle

Opgeslagen SQL-procedure om de waarde ja/nee in een tabel te controleren en sql . uit te voeren

Er is geen if (cursor) constructie of er bestaat inderdaad een exists operator in PL/SQL-syntaxis. U moet zoiets als dit doen:

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;

De en rownum =1 voorwaarde is alleen voor het geval er een groot aantal rijen is, omdat je het niet nodig hebt om ze allemaal te tellen voor een bestaanstest. (Het heeft geen invloed op het resultaat als het een miljoen rijen moet tellen, het is gewoon tijdverspilling als het je alleen maar uitmaakt of er één rij bestaat.) Je zou ook zoiets als dit kunnen gebruiken voor de bestaanscontrole:

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


  1. ORACLE SQL*Plus-zelfstudie

  2. Hoe de schemanaam en tabelnaam als invoer door te geven en vervolgens de geheugengrootte en het aantal rijen als uitvoer in plsql te krijgen

  3. Groepsgewijs Maximum van een bepaalde kolom

  4. Hoe moet ik het interpreteren Selecteer Distinct aliasRefForMe.field1 From [email protected] aliasRefForMe