MySQL - Ayuda problema procedimiento

   
Vista:

Ayuda problema procedimiento

Publicado por matitlive (2 intervenciones) el 20/09/2015 21:50:56
POR FAVOR ALGUIEN ME PUEDE DECIR POR QUE ME TIRA ESTE ERROR DE COMPILACIÓN?? GRACIAS.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Ayuda problema procedimiento

Publicado por xve (899 intervenciones) el 21/09/2015 08:05:31
Hola matitlive, el problema es que después del END if va un punto y coma...
1
END if;

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda problema procedimiento

Publicado por matitlive (2 intervenciones) el 21/09/2015 20:34:15
Idolo!!, lo arregle y arregle que me faltaba un END IF creo, ahora me muestra esto :s

[Err] 1064 - Erreur de syntaxe près de '' à la ligne 50
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Ayuda problema procedimiento

Publicado por xve (899 intervenciones) el 22/09/2015 10:35:11
Me alegro que te funcionara...

Cual es exactamente la linea 50?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ing. Domenico

Ayuda problema procedimiento

Publicado por Ing. Domenico (1 intervención) el 22/09/2015 16:03:07
Buena respuesta amigo pero con un editor mas adecuado o un entrono de programacion
te arrojaria ese error de sintaxys al predibujar los ciclos IF - ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar