USE `doc1vault`;
DROP procedure IF EXISTS `EIN_ACCESS1`;

DELIMITER $$
USE `doc1vault`$$
CREATE PROCEDURE `EIN_ACCESS1`(/*IN my_EIN VARCHAR(350),*/ IN my_ICODesc VARCHAR(200))
    BEGIN
    DECLARE finished INTEGER DEFAULT 0;
    DECLARE EINLIST varchar(200)  DEFAULT 0;
    DECLARE cur1 CURSOR FOR SELECT * FROM vault_databases where ico_description like CONCAT('%' , my_ICODesc , '%');
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
        get_rec:LOOP
        FETCH cur1 INTO EINLIST;
            IF finished = 1;
        SELECT 'Record Finished'; /*Gives error hewe*/
        LEAVE get_rec;
        END IF;
        END LOOP get_rec;
        END$$
DELIMITER ;


结果是


  错误1328(HY000):错误数量的FETCH变量

最佳答案

是的解决方案

USE `doc1vault`;
DROP procedure IF EXISTS `EIN_ACCESS1`;

DELIMITER $$
USE `doc1vault`$$
CREATE PROCEDURE `EIN_ACCESS1`(/*IN my_EIN VARCHAR(350),*/ IN my_ICODesc VARCHAR(200))
 BEGIN
    DECLARE finished INTEGER DEFAULT 0;
    DECLARE EINLIST varchar(400)  DEFAULT 0;
    DECLARE cur1 CURSOR FOR SELECT ico_index FROM vault_databases where
    ico_description      like CONCAT('%' , my_ICODesc , '%');

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;

    OPEN cur1;
    get_rec:LOOP

        FETCH cur1 INTO EINLIST;

        IF finished = 1 then
            SELECT 'Record Finished';
            LEAVE get_rec;
        END IF;
    END LOOP get_rec;

END$$
DELIMITER ;

关于mysql - 什么是MySQL中的dbms_output.put_line等效项或如何在MySQL中显示消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27917008/

10-16 13:36