sql >> Base de Datos >  >> RDS >> Oracle

Procedimiento almacenado de SQL para verificar el valor sí/no en una tabla y ejecutar sql

No hay if (cursor) construcción o de hecho cualquier exists operador en sintaxis PL/SQL. Deberá hacer algo como esto:

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;

El y número de fila =1 la condición es solo en caso de que haya una gran cantidad de filas, ya que no es necesario contarlas todas para una prueba de existencia. (No afectará el resultado si tiene que contar un millón de filas, es solo una pérdida de tiempo cuando solo le importa si existe una fila). También podría usar algo como esto para la comprobación de existencia:

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