结果包含多个行错误mysql

时间:2013-05-09 08:26:34

标签: mysql

我试图通过存储过程获取下一个可用的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)时,我收到错误结果包含多行

1 个答案:

答案 0 :(得分:3)

此错误可能意味着您在表TranID中有多个具有相同journal的条目,或者在表JournalType中具有相同journaltype的多个条目。

使用SELECT...INTO...语法时,您必须确保返回的结果集包含多行。