sql >> Database >  >> RDS >> Oracle

IF ELSE verklaring toevoegen

Wat betreft hoe je als beginner met dit soort syntaxisproblemen om kunt gaan, raad ik je aan om te oefenen met het vereenvoudigen tot het kleinst mogelijke voorbeeld, zodat je niet wordt afgeleid door de join-logica.

U kunt dit bijvoorbeeld snel testen en zien dat het niet werkt :

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

wat mislukt met

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

omdat de open rc for select syntaxis moet een enkele instructie zijn en kan niet worden opgesplitst met voorwaardelijke logica.

Merk op dat er geen create function is , parameters of joins enz. om dingen te compliceren. Je kunt ze allemaal weer toevoegen zodra je de syntaxis hebt rechtgezet. De case syntaxis van de instructie is hier . (Merk op dat er een aantal verschillende soorten case zijn .) Het moet een van beide zijn

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

of het equivalent met if :

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


  1. PHP Multidimensionale array naar ongeordende lijst, opbouw van url-pad

  2. PDO-updatetabel met array

  3. Selecteer n grootste waarden uit een tabel

  4. Time-out voor verbinding van Cloud SQL (postgres) voor externe gegevenswrapper naar replica-instantie