mysql - Error 1064 in stored procedure -


i'm not expert mysql , i've problems stored procedure. i'm trying sp conditions don't know wrong here, have mistake:

error code: 1064. have error in sql syntax; check manual corresponds mysql server version right syntax use near 'declare done int default 0; declare continue handler sqlstate '02000' set' @ line 16

delimiter $$ create procedure getlistprsn(in idequipo int, in tipo char, in puesto int) begin declare varjefe int; declare eqpsupjefe int; declare jefeono cursor select tblpuesto.ptolidereqp tblequipo      inner join tblpuesto   on (tblequipo.eqpid=tblpuesto.ptoeqp)     inner join tblplaza    on (tblpuesto.ptoid=tblplaza.pzapto)     inner join tblpersona on (tblplaza.pzaprsn=tblpersona.prsnid)     tblequipo.eqpid=idequipo , tblpuesto.ptoid=puesto; declare equiposuperiordemijefe cursor select tblequipo.eqpeqpsup     tblequipo     inner join tblpuesto on(tblequipo.eqpid=tblpuesto.ptoeqp)     tblpuesto.ptoid=puesto; if tipo="jefe"             declare done int default 0;         declare continue handler sqlstate '02000' set done=1;         open jefeono;             begin                 repeat                     fetch jefeono varjefe;                 until done end repeat;             end;         close jefeono;         if varjefe=1                             declare done int default 0;                 declare continue handler sqlstate '02000' set done=1;                 open equiposuperiordemijefe;                     begin                         repeat                             fetch equiposuperiordemijefe eqpsupjefe;                         until done end repeat;                     end;                 close equiposuperiordemijefe;                 call getlider(eqpsupjefe);         else             if varjefe=0                                     call getlider(idequipo);             end if;         end if; end if; end $$ delimiter ; 

problem in part pointed below, trying declare local variable inside if .. else block. can set variable inside if .. else block should declare them in beginning

   if varjefe=1                     declare done int default 0; <-- here 

you should declare variable @ beginning like

create procedure getlistprsn(in idequipo int, in tipo char, in puesto int) begin declare varjefe int; declare eqpsupjefe int; declare done int default 0; <-- declare here 

Comments

Popular posts from this blog

twig - Using Twigbridge in a Laravel 5.1 Package -

jdbc - Not able to establish database connection in eclipse -

Kivy: Swiping (Carousel & ScreenManager) -