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

Agregar sentencia IF ELSE

Con respecto a cómo lidiar con este tipo de problema de sintaxis como principiante, le sugiero que practique simplificándolo hasta el ejemplo más pequeño posible, para que no se distraiga con la lógica de unión.

Por ejemplo, puede probar esto rápidamente y ver que no funcionará :

declare
    rc sys_refcursor;
begin
    open rc for
        case
            when 1 = 1 then select * from dual  -- not valid
        end;
end;

que falla con

ORA-06550: line 6, column 29:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following: ...

porque el open rc for select la sintaxis tiene que ser una declaración única y no se puede dividir con lógica condicional.

Observe cómo no hay create function , parámetros o uniones, etc. para complicar las cosas. Puede volver a agregarlos todos una vez que haya aclarado la sintaxis. El case la sintaxis de la declaración es aquí . (Tenga en cuenta que hay un par de tipos diferentes de case .) Tiene que ser cualquiera

declare
    rc sys_refcursor;
begin
    case
        when 1 = 1 then
            open rc for select * from dual;
    end case;
end;

o el equivalente usando if :

declare
    rc sys_refcursor;
begin
    if 1 = 1 then
        open rc for select * from dual;
    end if;
end;