2012-03-24 5 views
0

Ich schreibe eine Update-Abfrage und es gibt mir Fehler, was ich versuche zu tun ist, um einen Wert zu nehmen multiplizieren es zu einem anderen Wert hinzugefügt.Update-Anweisung Fehler, Klammer, fehlgeschlagen Validierung ORACLE

Original-Aussage

Die Erklärung unten einwandfrei funktioniert,

UPDATE HOLIDAY_RESERVATION R SET SUBTOTAL = 
    NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.IN_FLIGHT_ID), 0) + 
    NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.OUT_FLIGHT_ID), 0) + 
    NVL((SELECT AC.ACC_PRICEPN FROM ACCOMMODATION AC WHERE AC.ACC_ID = R.ACC_ID), 0); 

Modifizierte Version nicht funktioniert Dies ist die modifizierte Version, ich die ersten beiden Auswahl mit einem Wert multiplizieren wollen in jedes Feld für Flug- und Außensitze Nr.

UPDATE HOLIDAY_RESERVATION R SET SUBTOTAL = 
    NVL(((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.IN_FLIGHT_ID), 0) * NVL(R.IN_FLIGHT_SEATS_NO,0)) + 
    NVL(((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.OUT_FLIGHT_ID), 0)* NVL(R.OUT_FLIGHT_SEATS_NO,0)) + 
    NVL((SELECT AC.ACC_PRICEPN FROM ACCOMMODATION AC WHERE AC.ACC_ID = R.ACC_ID), 0); 
+2

Dies sind DML-Anweisungen, keine Trigger. –

+0

Ja, ich habe vergessen, den Titel zu aktualisieren –

Antwort

1

NVL benötigt mindestens zwei Parameter. Aber die NVL s am Anfang auf der Linie haben nur eine.

Sie wollen wahrscheinlich:

UPDATE HOLIDAY_RESERVATION R SET SUBTOTAL = 
    NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.IN_FLIGHT_ID), 0) * NVL(R.IN_FLIGHT_SEATS_NO,0) + 
    NVL((SELECT F.FLI_PRICE FROM FLIGHT F WHERE F.FLI_ID = R.OUT_FLIGHT_ID), 0)* NVL(R.OUT_FLIGHT_SEATS_NO,0) + 
    NVL((SELECT AC.ACC_PRICEPN FROM ACCOMMODATION AC WHERE AC.ACC_ID = R.ACC_ID), 0); 

Das nächste Mal bitte die Fehlermeldung auf die Frage hinzufügen.

Verwandte Themen