2016-12-16 3 views
0
erwartet

das Symbol Encountered „DANN“, wenn eine der folgenden erwartet: * & - +;/at mod Rest rem und oder || multisetdas Symbol Encountered „DANN“, wenn eine der folgenden

CASE 
     WHEN CLAIMNUMBER = 311754 AND POLICY_NUMBER = 21620 THEN    cast(CLAIMNUMBER as varchar2(10)) + 'M' 
        WHEN CLAIMNUMBER = 317802 AND POLICY_NUMBER = 15571 THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
       WHEN CLAIMNUMBER = 318794 AND POLICY_NUMBER = 19325 THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
     WHEN CLAIMNUMBER = 319510 AND POLICY_RECORD_ID = '21294_19' THEN cast(CLAIMNUMBER as varchar2(10)) + 'M' 
      ELSE 
       cast(CLAIMNUMBER as varchar(10)) 
      END AS CLAIMNUMBER, 
+1

Bitte überprüfen Sie 'cast (CLAIMNUMBER als varchar2 (10)) +‚M'' In Oracle PL SQL oder SQL, verketten aussehen sollte Syntax ist '' || und nicht '+'. Ist dieser Teil einer größeren SQL-Abfrage? können Sie bitte vollständige Abfrage teilen? –

+0

Bitte geben Sie auch die Datentypen von 'CLAIMNUMBER' an –

+0

Warum verwenden Sie 'cast' nicht' to_char'? – Kacper

Antwort

0

CLAIMNUMBER Unter der Annahme numerischer Datentyp, die wahrscheinlichste Ursache für dieses Problem ist die Verwendung von + als Verkettungsoperator. Verwenden Sie stattdessen ||, um Zeichenfolgen zu verketten, und Ihre Abfrage sollte ordnungsgemäß funktionieren. verfeinerte Abfrage wie unten

select CASE 
      WHEN CLAIMNUMBER = 311754 AND POLICY_NUMBER = 21620 THEN cast(CLAIMNUMBER as varchar2(10)) 'M' 
      WHEN CLAIMNUMBER = 317802 AND POLICY_NUMBER = 15571 THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      WHEN CLAIMNUMBER = 318794 AND POLICY_NUMBER = 19325 THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      WHEN CLAIMNUMBER = 319510 AND POLICY_RECORD_ID = '21294_19' THEN cast(CLAIMNUMBER as varchar2(10)) || 'M' 
      ELSE 
        cast(CLAIMNUMBER as varchar2(10)) 
     END AS CLAIMNUMBER1 
+0

gelöst. Danke euch allen. – Shum

Verwandte Themen