MySQL - Ayudapa para crear un procedimiento almacenado

 
Vista:

Ayudapa para crear un procedimiento almacenado

Publicado por Mario (2 intervenciones) el 25/03/2009 09:03:12
Hola, estoy intentando crear un procemiento almacenado en MySQL mediante el software EMS SQL Manager 2005, pero me devuelve el error: "Variable or condition declaration after cursor or handler declaration".

El código es el siguiente:


CREATE PROCEDURE `new_proc`()
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE DONE INT DEFAULT O;
DECLARE C1 CURSOR FOR SELECT C_PROVINCIA, C_MUNICIPIO, C_POSTAL FROM MUNICIPIOS;
DECLARE PROVINCIA VARCHAR(5);
DECLARE MUNICIPIO VARCHAR(5);
DECLARE CP VARCHAR(5);

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN C1;

REPEAT
FETCH C1 INTO PROVINCIA, MUNICIPIO, CP ;

IF NOT DONE THEN

UPDATE `municipios`
SET C_MUNICIPIO=CONCAT(PROVINCIA,MUNICIPIO)
WHERE C_PROVINCIA=PROVINCIA AND C_POSTAL=CP;
END IF;

UNTIL DONE END REPEAT;

CLOSE C1;

END;

¿Alguien sabe porque se produce y que quiere decir este error?


Muchas gracias y un saludo.
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

RE:Ayudapa para crear un procedimiento almacenado

Publicado por Emiliano (98 intervenciones) el 26/03/2009 11:36:31
Proba asi:

CREATE PROCEDURE `new_proc`()
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE done INT DEFAULT O;
DECLARE PROVINCIA VARCHAR(5);
DECLARE MUNICIPIO VARCHAR(5);
DECLARE CP VARCHAR(5);

DECLARE C1 CURSOR FOR SELECT C_PROVINCIA, C_MUNICIPIO, C_POSTAL FROM MUNICIPIOS;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN C1;

REPEAT
FETCH C1 INTO PROVINCIA, MUNICIPIO, CP ;

IF NOT DONE THEN

UPDATE `municipios`
SET C_MUNICIPIO=CONCAT(PROVINCIA,MUNICIPIO)
WHERE C_PROVINCIA=PROVINCIA AND C_POSTAL=CP;
END IF;

UNTIL DONE END REPEAT;

CLOSE C1;

END;

"Variable o declaracion declarada despues del cursor o del manejdaor de la declaracio"

Te aparece ese error porque las declaraciones en algunas casos , llevan un orden , de todos modos confirmame si asi te anduvo , de todas formas mas tarde lo puebo y te confirmo.

Suerte
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

RE:Ayudapa para crear un procedimiento almacenado

Publicado por Mario (2 intervenciones) el 26/03/2009 11:45:51
Muchas gracias Emiliano por contestar.

No hace falta que compruebes nada, es por esa razón por la que no funcionaba.
No sabia que tenia que tener un orden lógico las declaraciones de variables y cursores. El orden es:

1º Declaración de variables.
2º Declaración de cursores.
3º Declaración de manejadores o "HANDLER".

Muchas gracias por tu información.
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