首页 > 解决方案 > MySQL 5.7 创建带有 int 输入语法错误的函数

问题描述

尝试在 MySQL 5.7 中创建一个函数,该函数将返回一年的总销售额,格式为 $,给定年份的两位小数作为整数输入。

表列 InvoiceID、deptid、salsamt、salesdate

    DELIMITER $$
    CREATE FUNCTION `tot_sale` (Year INT)
    RETURNS VARCHAR2
    BEGIN
    Select concat('$', format(salesamt), 2)
    from sales
    where YEAR(salesdate) = Year;
    RETURN 1;
    END$$
    DELIMITER ;

标签: mysqlfunctionmysql-5.7

解决方案


2必须是 的第二个参数FORMAT(),而不是 的参数CONCAT()

如果一个函数使用SELECT,它必须将结果存储在一个变量中。只允许过程直接返回结果集。

您需要使用SUM(salesamt)来获取当年的总销售额。

DELIMITER $$
CREATE FUNCTION `tot_sale` (Year INT)
RETURNS VARCHAR(255)
BEGIN
    DECLARE total VARCHAR(255);
    Select concat('$', format(SUM(salesamt), 2))
    INTO total
    from sales
    where YEAR(salesdate) = Year;
    RETURN @total;
END$$
DELIMITER ;

推荐阅读