Mysql ошибка 1064 ошибка хранимой процедуры

0
create function sf_get_empsallist(dname varchar(100))
returns varchar(300)
begin
declare emplist varchar(300) default '';
declare flag int default 0 ;
declare name varchar(100);
declare sal int;
declare c1 cursor  for
select ename,salary from emp join dept
on emp.deptid=dept.deptid
where deptname=dname;
declare continue handler for not found set flag=1;
open c1;
myloop: loop
fetch c1 into name,sal;
if flag=1 then
leave myloop;
end if;
set emplist=concat(emplist,',',name,'-',sal);
end loop;
return(substr(emplist,2));
close c1;
end
$$

Ошибка при получении

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right
  syntax to use near '' at line 4

Я попытался лучше всего решить проблему, но не смог ее найти.

  • 0
    У вас есть DELIMITER $$ до этого?
  • 0
    да разделитель $$
Показать ещё 8 комментариев
Теги:
stored-procedures

1 ответ

0
delimiter $$
SET GLOBAL log_bin_trust_function_creators = 1;
create function sf_get_empsallist(dname varchar(100))
returns varchar(300)
begin
declare emplist varchar(300) default '';
declare flag int default 0 ;
declare name varchar(100);
declare sal int;
declare c1 cursor  for
select ename,salary from emp join dept
on emp.deptid=dept.deptid
where deptname=dname;
declare continue handler for not found set flag=1;
open c1;
myloop: loop
fetch c1 into name,sal;
if flag=1 then
leave myloop;
end if;
set emplist=concat(emplist,',',name,'-',sal);
end loop;
return(substr(emplist,2));
close c1;
end
$$

Ещё вопросы

Сообщество Overcoder
Наверх
Меню