2015-02-18 57 views
5

Potrzebuję zaktualizować nowo utworzoną kolumnę w mojej tabeli Oracle. Aby to zrobić trzeba użyć istniejących wartości w wierszu, aby zdecydować, jak zapełnić tę kolumnę, otrzymuję błąd:Aktualizacja zapytania, jeśli instrukcja dla Oracle

java.lang.NullPointerException -> See Debug Output for details 

To moje zapytanie:

UPDATE 
    SCHEMA_NAME.TABLE_NAME 
SET 
    OCO= IF CO= 'Y' AND COM='Y' THEN 
{ 
    'Y' 
} ELSE 
{ 
    'N' 
} 
END IF; 

Wszelkie sugestie dotyczące składni?

Odpowiedz

12

Można użyć wyrażenia CASE w klauzuli SET.

Na przykład

UPDATE table 
SET schema.column = CASE 
         WHEN CO= 'Y' AND COM='Y' THEN 
          'Y' 
         ELSE 
          'N' 
        END 
+1

Pracował jak czar, dziękuję, doceniam. –

+1

Nie ma za co. Proszę oznaczyć odpowiedź, jeśli ci to pomoże. –

+0

jeśli wartość "CO" lub "COM" była aktualizowana w tym samym komunikacie, czy blok przypadku będzie uwzględniał starą wartość kolumn "CO" i "COM" lub zaktualizowanych wartości? – gkapagunta