我在mysql中使用cursor的下一个脚本中遇到了下一个错误。”脚本行:4您的sql语法有错误;查看与您的mysql服务器版本相对应的手册,以了解使用“declare c\u salari cursor for select salario from empleados”附近的正确语法;
打开cèsalari;
'第10行'
DELIMITER $$
DROP FUNCTION IF EXISTS `empresa`.`EmpleatsRang` $$
CREATE FUNCTION `empresa`.`EmpleatsRang` (valor_inicial int, valor_final int) RETURNS INT
BEGIN
declare i int default 0;
declare resultat int default 0;
declare totalemp int;
declare v_salario int;
declare c_salari cursor for select salario from empleados;
select count(*) into totalemp from empleados;
open c_salari;
while i<totalemp do
fetch c_salari into v_salario;
if salari >= valor_inicial and salari <= valor_final then
resultat=resultat+1;
end if;
i=i+1;
end while;
close c_salari;
return resultat;
END $$
DELIMITER ;
4条答案
按热度按时间0g0grzrc1#
这是因为我没有把set放入变量“i”和变量“resultat”
fiei3ece2#
所有declare语句都应该在begin本身之后,任何select语句之前。所以写吧
之前
cdmah0mi3#
结束时请用分号
t40tm48m4#
不要将光标用于这样简单的任务。改用select。
经验法则是:如果可能的话,使用一条sql语句。如果不是,请使用更多sql语句。游标是最后一个选项,它会降低dbms的性能。