在MySQL中dbms_output.put_行等效于什么,或者如何在MySQL中显示消息
导致 错误1328(HY000):获取变量的数量不正确 答案是肯定的在MySQL中dbms_output.put_行等效于什么,或者如何在MySQL中显示消息,mysql,stored-procedures,Mysql,Stored Procedures,导致 错误1328(HY000):获取变量的数量不正确 答案是肯定的 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
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 ;
问题在于光标。
FETCH
无法确定变量的数量,因为它在光标中使用了SELECT*
。
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 ;