MySQL執(zhí)行以下存儲過程
DROP PROCEDURE IF EXISTS pro_empIndepart;
CREATE PROCEDURE pro_empIndepart (IN empid INT)
READS SQL DATA
BEGIN
DECLARE c_id INT;
DECLARE c_empname VARCHAR(50);
DECLARE c_job VARCHAR(50);
DECLARE c_salary INT;
DECLARE cur CURSOR for select e.id,e.yuangongname,e.word,e.wage from emp e where e.id = empid;
declare continue handler for not found set done = 1;
OPEN cur;
FETCH cur INTO c_id,c_empname,c_job,c_salary;
SELECT c_id,c_empname,c_job,c_salary;
CLOSE cur;
END;
報錯:

image.png
錯誤原因:存儲過程中使用的變量done未聲明。
解決方案:
先對done變量進行聲明,后使用
修改上述存儲過程如下:
DROP PROCEDURE IF EXISTS pro_empIndepart;
CREATE PROCEDURE pro_empIndepart (IN empid INT)
READS SQL DATA
BEGIN
DECLARE c_id INT;
DECLARE c_empname VARCHAR(50);
DECLARE c_job VARCHAR(50);
DECLARE c_salary INT;
DECLARE done INT DEFAULT 0;
DECLARE cur CURSOR for select e.id,e.yuangongname,e.word,e.wage from emp e where e.id = empid;
declare continue handler for not found set done = 1;
OPEN cur;
FETCH cur INTO c_id,c_empname,c_job,c_salary;
SELECT c_id,c_empname,c_job,c_salary;
CLOSE cur;
END;
調(diào)用存儲過程:
CALL pro_empIndepart(5)
返回結(jié)果:

image.png