我正在尝试通过存储过程获取下一个可用 ID,但到目前为止我无法让它工作。这是我的存储过程
DELIMITER $$
USE `devt`$$
DROP PROCEDURE IF EXISTS `updateid`$$
CREATE DEFINER=`root`@`%` PROCEDURE `updateid`(IN `tran_id` VARCHAR(15), IN `typ` VARCHAR(15), OUT `lid` VARCHAR(15))
BEGIN
DECLARE id VARCHAR(15);
SET id = '';
SELECT TranID FROM journal WHERE TranID = tranid INTO id;
read_loop: LOOP
SELECT TranID FROM journal WHERE TranID = id INTO id;
IF id = tran_id THEN
UPDATE journaltype SET journaltype.NextRefNbr = journaltype.NextRefNbr + 1 WHERE journaltype.JournalType = typ;
SELECT journaltype.NextRefNbr FROM journaltype WHERE journaltype.JournalType = typ INTO id;
ITERATE read_loop;
ELSE
SET lid= id;
LEAVE read_loop;
END IF;
END LOOP;
END$$
DELIMITER ;**strong text**
当我运行查询 CALL updateid('17000001','GJ', @test) 时,我得到一个错误 Result consisted of more than row
最佳答案
此错误可能意味着您在表 journal
中有多个具有相同 TranID
的条目,或者在表中有多个具有相同 JournalType
的条目期刊类型
。
当使用 SELECT...INTO...
语法时,您必须确保返回的结果集不包含多行。
关于mysql - 结果由多行错误组成 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457510/