Oracle
 sql >> Base de données >  >> RDS >> Oracle

Procédure stockée SQL pour vérifier la valeur oui/non dans une table et exécuter sql

Il n'y a pas de if (cursor) construction ou bien tout exists opérateur dans la syntaxe PL/SQL. Vous devrez faire quelque chose comme ceci :

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;

Le et rownum =1 condition est juste au cas où il y aurait un grand nombre de lignes, car vous n'en avez pas besoin pour toutes les compter pour un test d'existence. (Cela n'affectera pas le résultat s'il doit compter un million de lignes, c'est juste une perte de temps lorsque vous ne vous souciez que de l'existence d'une ligne.) Vous pouvez également utiliser quelque chose comme ceci pour la vérification d'existence :

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