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
Post a Comment