2016-09-09 4 views
0

Das Problem ist, ich schreibe die Funktion direkt von Shell (Bash) versuchen, die Syntax von einigen IDE, die ich nicht weiß, zu übersetzen! Die ursprüngliche Funktion ist:MySql Funktionssteuer (IVA berechnen)

CREATE FUNCTION CalcIVA(@Price money)RETURNS money 
AS 
BEGIN 
    DECLARE @IVA money 
    SET @IVA = @Price * 1.16 
    RETURN @IVA 
END; 

So etwas Syntax mit mysql> prompt arbeiten geändert:

CREATE FUNCTION CalculoIVA(x INT)RETURNS INT DETERMINISTIC 
BEGIN 
    DECLARE IVA INT 
    SET IVA = x *1.16 
    RETURN IVA 
END; 

, was ich falsch mache?

Fehler 1064 (42000): Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie die Handbuch, das zu Ihrem MySQL-Server-Version für die Syntax rechts entspricht in der Nähe zu verwenden 'SET IVA = x * 1,16 RETURN IVA END' in Zeile 1

+0

wo habe ich das Semikolon verpasst? Ich sehe es nicht! – Hell0

Antwort

1

Bestimmen Sie, was Sie wollen, Datentypen. INT wird nicht so heiß mit Ihrer 1.16-Idee arbeiten. Sie verlieren, um zu einem INT zu runden. Die unten verwendet keine INT

DROP FUNCTION IF EXISTS CalculoIVA; 
DELIMITER $$ 
CREATE FUNCTION CalculoIVA 
(x DECIMAL(12,4)) 
RETURNS DECIMAL(12,4) 
DETERMINISTIC 
BEGIN 
    DECLARE IVA DECIMAL(12,4); -- OR FLOAT etc 
    SET IVA = x *1.16; 
    RETURN IVA; 
END;$$ 
DELIMITER ; 

select CalculoIVA(9.12); 
-- 10.5792 

Wenn Sie die Datentypen sein wollen DECIMAL(12,2) oder FLOAT nur die notwendigen Änderungen vorzunehmen.

Hinweis: Der DELIMITER-Wrapper ist für PHPMyAdmin-Benutzer nicht erforderlich.

+0

Vielen Dank. Das hat das Problem gelöst. Ich habe es auch mit FLOAT versucht, aber auch nicht funktioniert. Vielen Dank! – Hell0

+0

YW jederzeit nur Holler – Drew

+1

Jetzt kann ich das verpasste Semikolon innerhalb des Codeblocks innerhalb der Funktion sehen !! – Hell0

Verwandte Themen