Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 创建存储函数以检索两个日期之间的总金额_Mysql_Sql - Fatal编程技术网

Mysql 创建存储函数以检索两个日期之间的总金额

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

我创建了一个存储函数,只想通过以下查询检索总金额,但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$$

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。请显示如何调用该函数。