1

我正在尝试获取组中所有记录的总数,但似乎无法让它使用发送的参数。

这是功能:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION f_medicare_claim_totals(bat_invoice VARCHAR(45)) 
    RETURNS DECIMAL(10,2) 
    READS SQL DATA 
BEGIN 
    DECLARE f_medicare_total DECIMAL(10,2); 
    SELECT sum(medicare_allowable_total)
    INTO f_medicare_total 
    FROM v_materialized_view_pa 
    WHERE bat_invoice=bat_invoice; 

    RETURN(f_medicare_total);  
END;

如果我选择具有7944如下值的函数:

SELECT f_medicare_claim_totals(7944) as total

返回给查询的值是整个列的值。就像它在没有 where 命令的情况下进行查询一样。

我知道我知道这一点,但希望有人能看到我的问题在哪里..

提前致谢...

4

1 回答 1

1

我认为问题在于您的参数名称与列名称相同。MySQL 文档不鼓励这样做:

局部变量不应与表列同名。如果 SQL 语句,例如 SELECT ... INTO 语句,包含对列的引用和同名声明的局部变量,则 MySQL 当前将引用解释为变量的名称。

据此,您的WHERE条款基本上是在说WHERE 7944 = 7944

尝试更改您的参数名称,看看是否有帮助。

于 2013-05-16T16:50:40.087 回答