我试图通过存储过程获取下一个可用的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)时,我收到错误结果包含多行
答案 0 :(得分:3)
此错误可能意味着您在表TranID
中有多个具有相同journal
的条目,或者在表JournalType
中具有相同journaltype
的多个条目。
使用SELECT...INTO...
语法时,您必须确保返回的结果集不包含多行。