MySql功能税(计算IVA)

时间:2016-09-09 19:04:04

标签: mysql bash

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

<div class="container">
  <a href="#" class="image">
    <img src="http://placehold.it/400x400" alt="">
  </a>
  <a href="#" class="image">
    <img src="http://placehold.it/400x400" alt="">
  </a>
  <a href="#" class="image">
    <img src="http://placehold.it/400x400" alt="">
  </a>
  <a href="#" class="image">
    <img src="http://placehold.it/400x400" alt="">
  </a>
  <a href="#" class="image">
    <img src="http://placehold.it/400x400" alt="">
  </a>
  <a href="#" class="image">
    <img src="http://placehold.it/400x400" alt="">
  </a>
</div>

因此更改了一些语法以使用CREATE FUNCTION CalcIVA(@Price money)RETURNS money AS BEGIN DECLARE @IVA money SET @IVA = @Price * 1.16 RETURN @IVA END; 提示符:

mysql>

我做错了什么?

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第1行'SET CREATE FUNCTION CalculoIVA(x INT)RETURNS INT DETERMINISTIC BEGIN DECLARE IVA INT SET IVA = x *1.16 RETURN IVA END; = IVA * 1.16返回x END'附近使用的语法

1 个答案:

答案 0 :(得分:1)

确定所需的数据类型。你的1.16想法INT不会那么热。你输给了一个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包装器。