Oracle
 sql >> Datenbank >  >> RDS >> Oracle

IF ELSE-Anweisung hinzufügen

Bezüglich des Umgangs mit dieser Art von Syntaxproblemen als Anfänger schlage ich vor, dass Sie üben, es bis zum kleinstmöglichen Beispiel zu vereinfachen, damit Sie nicht von der Verknüpfungslogik abgelenkt werden.

Sie können dies beispielsweise schnell testen und feststellen, dass es nicht funktioniert :

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

was mit

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

weil die open rc for select Syntax muss eine einzelne Anweisung sein und kann nicht mit bedingter Logik aufgeteilt werden.

Beachten Sie, dass es keine create function gibt , Parameter oder Verknüpfungen usw., um die Dinge zu komplizieren. Sie können alle diese wieder hinzufügen, sobald Sie die Syntax geklärt haben. Der case Die Syntax der Anweisung lautet hier . (Beachten Sie, dass es ein paar verschiedene Arten von case gibt .) Es muss eines von beiden sein

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

oder das Äquivalent mit if :

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