Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Procedimento armazenado SQL para verificar o valor sim/não em uma tabela e executar o sql


Não existe if (cursor) construção ou mesmo qualquer exists operador na sintaxe PL/SQL. Você precisará fazer algo assim:
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;

O e rownum =1 condição é apenas no caso de haver um grande número de linhas, pois você não precisa contar todas elas para um teste de existência. (Não afetará o resultado se tiver que contar um milhão de linhas, é apenas uma perda de tempo quando você só se importa se existe uma linha.) Você também pode usar algo assim para a verificação de existência:
select count(*) into somevar from dual
where  exists
       ( select 1
         from   table1
         where  value_desc = 'Indicator'
         and    value1 = 'Y'
         and    rownum = 1 );