Comunidad de diseño web y desarrollo en internet online

Procedimiento error mysql

Citar            
MensajeEscrito el 20 Sep 2015 08:26 pm

Código :

use l2jdb;
DROP procedure IF EXISTS `BorrarSkills`;

DELIMITER $$
use l2jdb$$

CREATE PROCEDURE BorrarSkills (chname varchar(35))
BEGIN
Declare idchar decimal(11,0);
Declare haveskills int(11);
Declare i int(1);
Declare skill_id1 int(3);
Declare skill_id2 int(3);
Declare skill_id3 int(3);
Declare level1 int(2);
Declare level2 int(2);
Declare level3 int(2);
#SET idlight1=(select skill_id from character_skill where skill_id=236 and obj_id=idchar);
SET idchar = (select obj_id from  characters where char_name = chname);
SET skill_id1=(select skill_id from character_skills where char_obj_id=idchar and skill_id=236);
SET skill_id2=(select skill_id from character_skills where char_obj_id=idchar and skill_id=252);
SET skill_id3=(select skill_id from character_skills where char_obj_id=idchar and skill_id=258);
#231, 232, 253,259 HEAVY ARMOR MASTERY
# LIGHT ARMOR MASTERY 236, 258, 252
#234,235,251 ROBE MASTERY
if idchar > 1  then
SET i=0;
 if skill_id1=236 then
  set i = i+1;
  set level1=(select skill_level from character_skills where skill_id=236 and char_obj_id=idchar);
 END if
  if skill_id2=252 then
  set  i = i+1;
  set level2=(select skill_level from character_skills where skill_id=252 and char_obj_id=idchar);
 END if 
  if skill_id3=258 then
  set i=i+1;
  set level3=(select skill_level from character_skills where skill_id=258 and char_obj_id=idchar);
 END if
 if i<1 then
  if level1>level2 then
   delete from character_skills where skill_id=236 and char_obj_id=idchar;
  else if level2>level1 then
   delete from character_skills where skill_id=252 and char_obj_id=idchar;
  else if level1>level3 then
   delete from character_skills where skill_id=236 and char_obj_id=idchar;
  else if level3>level1 then
   delete from character_skills where skill_id=258 and char_obj_id=idchar;
  else if level3>level2 then
   delete from character_skills where skill_id=258 and char_obj_id=idchar;
  else if level2>level3 then
   delete from character_skills where skill_id=252 and char_obj_id=idchar;
 END IF
END IF
END$$

DELIMITER ;


*******ERROR*******

[Err] 1064 - Erreur de syntaxe près de 'if skill_id2=252 then
set i = i+1;
set level2=(select skill_level from ch' à la ligne 26

Por matitlive

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Sep 2015 12:37 pm
Sería mejor si usas CASE en vez de anidar IFs.

El error lo tienes porque no has puesto el punto y coma en END IF anterior al IF donde te marca el error.

Por DriverOp

Claber

2510 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Sep 2015 06:30 pm
Gracias!!, ahora me marca este error :
[Err] 1064 - Erreur de syntaxe près de '' à la ligne 50

Por matitlive

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 Sep 2015 12:09 pm
Error de sintáxis en la línea 50... ¿y cuál es la línea 50?.

Amigo. Será mejor que tomes un curso de SQL porque preguntar cosas como estas da a pensar que estás toqueteando un código que no entiendes.

Por DriverOp

Claber

2510 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.