Mysql select 中的错误嵌套算法
Mysql error nested arithmetic in select
当我尝试执行此过程时,它显示错误。
USE `metro`;
DROP procedure IF EXISTS `transaction`;
DELIMITER $$
USE `metro`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `transaction`(
IN amount_p INT,
IN id_in INT,
IN id_out INT,
IN uidd INT
)
BEGIN
DECLARE uide INT;
DECLARE amt INT;
DECLARE NOW_AMT INT DEFAULT 0;
SELECT `amount` INTO amt FROM metro.wallet WHERE `uid`=uide;
INSERT INTO metro.transactions(`amount_deducted`,`time`,`station_id_in`,`station_id_out`,`uid`)
VALUES (amount_p,now(),id_in,id_out,uid);
SELECT uidd INTO uide;
SELECT uide;
SET NOW_AMT:=@amt+amount_p;
SELECT amt;
UPDATE metro.wallet SET `uid`=uide,`amount`=NOW_AMT;
END$$
DELIMITER ;
钱包是一个 table,带有 uid 和 amount 列。
错误代码 1048,SQL 状态 23000:列 'amount' 不能为空
第 1 行,第 1 列
执行在 0 秒后完成,发生 1 个错误。
执行:
call metro.transaction(112,1,1,1);
也许将您的 AMOUNT 包装在一个 case 语句中,如果它是 NULL,您可以 return 默认值。
SELECT case when `amount` is NULL then '' else `amount` END as `amount` INTO amt FROM metro.wallet WHERE `uid`=uide;
当我尝试执行此过程时,它显示错误。
USE `metro`;
DROP procedure IF EXISTS `transaction`;
DELIMITER $$
USE `metro`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `transaction`(
IN amount_p INT,
IN id_in INT,
IN id_out INT,
IN uidd INT
)
BEGIN
DECLARE uide INT;
DECLARE amt INT;
DECLARE NOW_AMT INT DEFAULT 0;
SELECT `amount` INTO amt FROM metro.wallet WHERE `uid`=uide;
INSERT INTO metro.transactions(`amount_deducted`,`time`,`station_id_in`,`station_id_out`,`uid`)
VALUES (amount_p,now(),id_in,id_out,uid);
SELECT uidd INTO uide;
SELECT uide;
SET NOW_AMT:=@amt+amount_p;
SELECT amt;
UPDATE metro.wallet SET `uid`=uide,`amount`=NOW_AMT;
END$$
DELIMITER ;
钱包是一个 table,带有 uid 和 amount 列。
错误代码 1048,SQL 状态 23000:列 'amount' 不能为空 第 1 行,第 1 列
执行在 0 秒后完成,发生 1 个错误。
执行:
call metro.transaction(112,1,1,1);
也许将您的 AMOUNT 包装在一个 case 语句中,如果它是 NULL,您可以 return 默认值。
SELECT case when `amount` is NULL then '' else `amount` END as `amount` INTO amt FROM metro.wallet WHERE `uid`=uide;