问题是我直接从shell(bash)编写函数
试图从我不知道的一些IDE中翻译语法!
原始功能是:

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


因此更改了一些语法以与mysql>提示符一起使用:

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


我做错了什么?


  错误1064(42000):您的SQL语法有错误;检查
  与您的MySQL服务器版本相对应的手册
  在第1行的'SET IVA = x * 1.16 RETURN IVA END'附近使用的语法

最佳答案

确定所需的数据类型。 INT对于您的1.16构想不太有用。您无法舍入到INT。以下不使用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


如果希望数据类型为DECIMAL(12,2)FLOAT,只需进行必要的更改。

注意:PHPMyAdmin用户不需要DELIMITER包装器。

关于mysql - MySQL函数税(计算IVA),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39418211/

10-15 05:09