1

ストアド プロシージャを介して次に利用可能な 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) を実行すると、エラーが発生します 結果は複数の行で構成されていました

4

2 に答える 2

4

このエラーは、おそらく、同じ in table を持つ複数のエントリ、または同じTranIDin tableを持つ複数のエントリがあることを意味し ます。journalJournalTypejournaltype

構文を使用する場合SELECT...INTO...、返される結果セットが複数の行で構成されていないことを確認する必要があります。

于 2013-05-09T08:53:37.607 に答える