存储过程中的 MySQL 变量存在问题

问题描述 投票:0回答:1

我有一个计算交易佣金的存储过程 每笔交易都有买家和卖家,我们正在计算双方的佣金。 例如,0.15%的佣金被扣除为网站份额,如果交易者被某人推荐到网站,那么推荐人将获得20%的网站份额。推荐人还可以执行回扣,将其 10% 的份额返还给交易者。

我的问题是,有时变量(@buySideReferrerCommission、@buySideUserKickBack)填充为零值,它们应该具有更高的值。如果有人能提供帮助,我将不胜感激。


This is the the stored procedure:

DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
       ROLLBACK;
       RESIGNAL;
    END;

START TRANSACTION;


SET @buySideSiteShare := TRUNCATE(COALESCE((tradeAmount * 0.15) / 100, 0), 12);
SET @buySideUserKickBack := TRUNCATE(COALESCE(@buySideSiteShare * 10 / 100, 0), 12);
SET @buySideReferrerCommission := TRUNCATE(COALESCE(((@buySideSiteShare * 20) / 100) - @buySideUserKickBack, 0), 12);

INSERT INTO commissions (trade_id, site_share, referrer_share, kickback) VALUES (@tradeId,
TRUNCATE(COALESCE(@buySideSiteShare - @buySideReferralerCommission - @buySideUserKickBack, 0), 12), buySideReferrerCommission, buySideUserKickBack);


COMMIT;
mysql stored-procedures
1个回答
0
投票

您设置@buySideReferrerCommission,但在插入时变成@buySideReferralerCommission,这意味着@buySideSiteShare - @buySideReferralerCommission - @buySideUserKickBack 返回null,您将其合并为0

© www.soinside.com 2019 - 2024. All rights reserved.