结果包含多个行错误mysql
问题描述:
我想通过存储过程获得下一个可用的id,但到目前为止我无法使其工作。这是我的存储过程结果包含多个行错误mysql
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)我得到一个错误的结果包括多行的
答
此错误可能意味着您要么在表中具有相同的TranID
的多个条目,要么在表journaltype
中具有相同的JournalType
的多个条目。
使用SELECT...INTO...
语法时,您必须确保返回的结果集不会是而是由多行组成。
林相当肯定,将被检索的值只是一个单一的条目。列tranid是一个独特的关键。 – John 2013-05-09 08:56:02
类型是否与您尝试运行'SELECT'语句“手动”(并且没有'INTO'部分)并查看返回的内容? – gkalpak 2013-05-09 09:41:57
是。它返回一个单一的值。 – John 2013-05-09 10:27:33