Oracle
 sql >> Baza danych >  >> RDS >> Oracle

brakujący błąd słowa kluczowego w instrukcji Oracle CASE WHEN sql

 CASE EVENT_ID WHEN WF.STATUS_ID=0 THEN EVENT_ID=10003 
    WHEN WF.STATUS_ID=1 THEN EVENT_ID=10018 END AS EVENTID

Zmieszałeś dwie różne składnie z SPRAWY oświadczenie.

1.simple_case_statement

   CASE [ expression ]

   WHEN condition_1 THEN result_1
   WHEN condition_2 THEN result_2
   ...
   WHEN condition_n THEN result_n

   ELSE result

   END

2.searched_case_statement

CASE 

   WHEN expression condition_1 THEN result_1
   WHEN expression condition_2 THEN result_2
   ...
   WHEN expression condition_n THEN result_n

   ELSE result

END 

Zmień swoje wyrażenie na -

CASE 
   WHEN WF.STATUS_ID=0 THEN 10003 
   WHEN WF.STATUS_ID=1 THEN 10018
END AS EVENTID

Kliknij ten link, aby zobaczyć dokumentację dotyczącą obu składni.

Aktualizacja OP twierdzi, że nadal otrzymuje błąd brakującego słowa kluczowego . To jest przypadek testowy, który pokazuje, że to nieprawda. Brakujące słowo kluczowe zostanie naprawione za pomocą poprawnej instrukcji CASE.

SQL> CREATE OR REPLACE
  2  PROCEDURE EXT_SELF_10003_SIGWF
  3  AS
  4  BEGIN
  5    -- first empty TEMP_WF_WORKFLOW table
  6    EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_WF_WORKFLOW';
  7    -- get WF_WORKFLOW table data
  8    INSERT
  9    INTO TEMP_WF_WORKFLOW
 10      (
 11        STATUS_ID,
 12        EVENT_ID,
 13        ORDER_NUMBER
 14      )
 15    SELECT WF.STATUS_ID,
 16      CASE
 17        WHEN WF.STATUS_ID=0
 18        THEN 10003
 19        WHEN WF.STATUS_ID=1
 20        THEN 10018
 21      END AS EVENTID,
 22      TSM.ORDER_NUMBER
 23    FROM [email protected]_RETAIL WF
 24    JOIN TMP_SOAP_MONITORING_IDS TSM
 25    ON TSM.SUBSCRIPTION_ID=WF.SUBSCRIPTION_ID
 26    WHERE TSM.order_type  ='SELF_REGISTRATION'
 27    AND WF.NAME           ='SIGNUP_MOBILE_PRE_PAID';
 28    COMMIT;
 29  END EXT_SELF_10003_SIGWF;
 30  /

Warning: Procedure created with compilation errors.

SQL> sho err
Errors for PROCEDURE EXT_SELF_10003_SIGWF:

LINE/COL ERROR
-------- --------------------------------------------------
7/3      PL/SQL: SQL Statement ignored
23/8     PL/SQL: ORA-00942: table or view does not exist
SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trzeba zresetować wartość sekwencji w Oracle

  2. Czy istnieje sposób na utworzenie wielu wyzwalaczy w jednym skrypcie?

  3. Jak mogę wyodrębnić pliki z pola Oracle BLOB?

  4. przechwyć wyjątek DB w aplikacji JSF+EJB

  5. Praca ze zdarzeniami w Oracle Cloud Infrastructure Część 1:podstawy usługi