Hallo... komme bei der Funktion nicht weiter, er meckert immer und sagt:
ERROR at line 25: PLS-00103: Encountered the symbol "THEN" when expecting one of the following: := . ( % ; 1. CREATE OR REPLACE FUNCTION monatspreis (
2. vertragsbeginn in date,
3. vertragsende in date,
4. monat in number,
hier die Funktion.... könnt ihr mir sagen wo der Fehler liegt... hab jetzt schon 2 Stunden probiert... sollte eigentlich vom syntax her richtig sein!
ERROR at line 25: PLS-00103: Encountered the symbol "THEN" when expecting one of the following: := . ( % ; 1. CREATE OR REPLACE FUNCTION monatspreis (
2. vertragsbeginn in date,
3. vertragsende in date,
4. monat in number,
hier die Funktion.... könnt ihr mir sagen wo der Fehler liegt... hab jetzt schon 2 Stunden probiert... sollte eigentlich vom syntax her richtig sein!
Code:
CREATE OR REPLACE FUNCTION monatspreis (
vertragsbeginn in date,
vertragsende in date,
monat in number,
jahr in number,
listenpreis in number,
rabatt in number,
anzahl in number
) RETURN number IS
ergebnis number;
BEGIN
IF
((to_char(vertragsbeginn,'dd') = 1
AND to_char(vertragsbeginn,'mm') = monat
AND to_char(vertragsbeginn,'yy') = jahr)
OR (to_char(vertragsbeginn,'yy') < jahr
AND to_char(vertragsende,'yy') = jahr
AND to_char(vertragsende,'mm') >= monat))
THEN ergebnis := ((listenpreis -(listenpreis*(rabatt/100)))*anzahl);
ELSEIF (to_char(vertragsbeginn,'dd') > 1
AND to_char(vertragsbeginn,'mm') = monat
AND to_char(vertragsbeginn,'yy') = jahr)
THEN ergebnis := ((((listenpreis-(listenpreis*rabatt/100))/30)* (31 -(to_char(vertragsbeginn,'dd')))* Anzahl));
ELSEIF ((to_char(vertragsbeginn,'mm') = monat
AND to_char(vertragsende,'mm') >= monat
AND to_char(vertragsbeginn,'yy') = jahr)
OR (to_char(vertragsende,'yy') > jahr
AND to_char(vertragsbeginn,'yy') = jahr
AND to_char(vertragsbeginn,'mm') <= monat))
THEN ergebnis := ((listenpreis -(listenpreis*(rabatt/100)))*anzahl);
ELSE ergebnis := (listenpreis - listenpreis);
END IF
return ergebnis;
END