Mysql 创建存储函数以检索两个日期之间的总金额
我创建了一个存储函数,只想通过以下查询检索总金额,但ouput为null。请告诉我其中有什么错误Mysql 创建存储函数以检索两个日期之间的总金额,mysql,sql,Mysql,Sql,我创建了一个存储函数,只想通过以下查询检索总金额,但ouput为null。请告诉我其中有什么错误 DELIMITER $$ CREATE FUNCTION demo6(a DATE , b DATE) RETURNS INT DETERMINISTIC BEGIN RETURN (SELECT SUM(`amount`) AS `total` FROM `temp_sale` WHERE `transaction_date` BETWEEN a AND b); END$$ DE
DELIMITER $$
CREATE FUNCTION demo6(a DATE , b DATE)
RETURNS INT
DETERMINISTIC
BEGIN
RETURN (SELECT SUM(`amount`) AS `total` FROM
`temp_sale` WHERE `transaction_date`
BETWEEN a AND b);
END$$
DELIMITER ;
如果函数返回
NULL
,则查询返回NULL
。此查询:
SELECT SUM(`amount`) AS `total`
FROM `temp_sale`
WHERE `transaction_date` BETWEEN a AND b;
每当没有与WHERE
子句匹配的行时,返回NULL
。因此,您的结果可能是由于空表或没有与条件匹配的行
第二个原因可能是temp\u sale
中存在名为A
或b
的列。我强烈建议为函数和存储过程参数提供前缀,以避免命名冲突:
CREATE FUNCTION demo6 (
in_date_first DATE,
in_date_last DATE
) RETURNS INT DETERMINISTIC
BEGIN
RETURN (SELECT SUM(ts.amount)
FROM temp_sale ts
WHERE ts.transaction_date BETWEEN in_date_first AND in_date_last);
END$$
“ouput为null”可能仅仅意味着没有为您的BEVER条件找到任何行。请添加示例数据和预期结果。@Suleman。请显示如何调用该函数。