2016-09-09 16 views
0

問題は私がシェル(bash)から直接関数を書いていることです。 私は知らないIDEから構文を翻訳しようとしています!! は、元の関数である:私が間違ってやっている何MySql function tax(IVAを計算する)

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

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

のでmysql>プロンプトで動作するようにいくつかの構文を変更しましたか?

ERROR 1064(42000):SQL構文にエラーがあります。近くに使用する権利 構文についてはMySQLサーバのバージョンに対応 マニュアルをご確認ライン1

+0

私はセミコロンを見逃しましたか?私はそれを見ない! – Hell0

答えて

1

で「IVA = x * 1.16 RETURN IVA ENDを設定する」あなたが望むデータ型が決定されます。 INTはあなたの1.16アイデアではあまり熱くなりません。 INTへの丸めを失う。あなたはデータ型はDECIMAL(12,2)またはFLOATだけで、必要な変更を加えるようにしたい場合は、以下の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 

を使用していません。

注:DELIMITERラッパーは、PHPMyAdminユーザーにとっては不要です。

+0

ありがとうございました。それが問題を解決しました。私もFLOATで試していましたが、どちらも動作していませんでした。ありがとう! – Hell0

+0

ywいつでもちょうどホラー – Drew

+1

今私は、関数内のコードブロック内で見逃されたセミコロンを見ることができます! – Hell0