1
我想通过存储过程获得下一个可用的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是一个独特的关键。 – John 2013-05-09 08:56:02
类型是否与您尝试运行'SELECT'语句“手动”(并且没有'INTO'部分)并查看返回的内容? – gkalpak 2013-05-09 09:41:57
是。它返回一个单一的值。 – John 2013-05-09 10:27:33