gpt4 book ai didi

MySQL 存储过程 : Variable set is null though query returns results

转载 作者:行者123 更新时间:2023-11-29 03:10:16 26 4
gpt4 key购买 nike

我遇到了存储过程的问题,这部分对我来说更具体:

   CREATE FUNCTION calculCommission
(
idprogramV INT
, idmodeV INT
, amount DECIMAL(10,2)
, amount_total DECIMAL(10,2)
,idformat INT
)
RETURNS DECIMAL(10,2)
BEGIN
DECLARE commission DECIMAL(10,2);
DECLARE total_amount_default DECIMAL(10,2);
IF amount_total IS NULL OR amount_total = '' THEN

SET total_amount_default = (SELECT CONVERT(`value`+commission,DECIMAL(10,2)) as default_amount
FROM remunerations r
JOIN groups g
on g.idgroup = r.idgroup
WHERE g.idprogram=idprogramV
AND r.idmode=idmodeV
AND g.`default`=1);

SET commission = (total_amount_default - amount);

ELSE
SET commission = amount_total - amount;

END IF;
RETURN commission;
END$$

首先,我意识到将 NULL 值传递给“amount_total”不会被过程正确解析。如果 amount_total 参数设置为 NULL,IF amount_total IS NULL 将返回 false,但它被视为空字符串。很奇怪,但我使用“OR amount_total = ''解决了这个问题。

现在我的问题是 SET total_amount_default 行。当我手动执行应该提取到 SQL 客户端变量中的查询时,我得到了一个结果 (0.56)。但是在存储过程中,它总是返回NULL。

我想知道这是否与数据类型有关,所以我尝试转换结果,或者与传递给查询的变量有关。但是我还有其他程序可以使用完全相同类型的表达式给出正确的结果。

我在那里挠头,不知道如何解决这个问题。

谢谢你的帮助

编辑:我添加了一些调试以查看发生了什么:idprogramV 值,就在尝试查询之前是:4258idmodeV 值,同时为:1使用带有这些参数的查询返回 0.52,但我尝试将结果直接插入到表中以查看它的样子,但我得到 NULL...我真的不知道出了什么问题,我猜这是查询执行的变量替换。

Edit2:Okaaaaaay 新手错误。

我正在请求一个与存储过程中声明的变量同名的字段。

在查询中使用变量而不是表字段。

谢谢我!

最佳答案

Edit2:Okaaaaaay 新手错误。

我正在请求一个与存储过程中声明的变量同名的字段。

在查询中使用变量而不是表字段。

谢谢我!

(就在那里寻找徽章 ;))

关于MySQL 存储过程 : Variable set is null though query returns results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com