MySQL - Procedimiento almacenado no funciona

   
Vista:

Procedimiento almacenado no funciona

Publicado por Rolando (10 intervenciones) el 11/05/2015 23:03:30
Señores, tengo el siguiente código de un procedimiento almacenado:

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
DROP PROCEDURE IF EXISTS `SP_insertATE`;
DELIMITER $$
 
CREATE DEFINER=`registro_ate`@`localhost`
PROCEDURE `SP_insertATE`(IN `id_ateI` INT(11),
                                                        IN `id_tipo_institucionI` INT(11),
                                                        IN `nombre_ateI` VARCHAR(100) CHARSET utf8,
                                                        IN `rut_ateI` VARCHAR(20) CHARSET utf8,
                                                        IN `id_estado_logicoI` INT(11),
                                                        OUT `ok` INT(1),
                                                        IN `nombre_responsableI` VARCHAR(100) CHARSET utf8,
                                                        IN `email_responsable` VARCHAR(100) CHARSET utf8)
 
BEGIN
	declare exit handler for not found rollback;
	declare exit handler for sqlexception rollback;
	declare exit handler for sqlwarning rollback;
 
	set ok = 0;
	start transaction;
    	    	INSERT INTO ate (id_ate,
                         id_tipo_institucion,
                         nombre_ate,
                         rut_ate,
                         id_estado_logico
                        )
	 			 VALUES (id_ateI,
                         id_tipo_institucionI,
                         nombre_ateI,
                         rut_ateI,
                         id_estado_logicoI
                        );
 
            	SELECT obtenerSecuencia("id_registro_ate") AS id_registro_ateI;
 
		INSERT INTO registro_ate (id_registro_ate,
    	    	    	    	                                 id_ate,
    	    	    	    	                                 id_estado_registro_ate,
    	    	    	    	                                 nombre_responsable,
    	    	    	    	                                 email_responsable,
    	    	    	    	                                 id_estado_logico)
		VALUES (id_registro_ateI,
				  id_ateI,
                                  1,
                                  nombre_responsableI,
                                  email_responsableI,
                                  1
    	    	    	    	 );
    COMMIT;
    SELECT 1 AS ok;
END$$
DELIMITER ;


Pero resulta que cuando le hago el CALL al procedimiento, no me hace absolutamente nada, pero tampoco me da errores, solo el @ok me lo devuelve como = 0

Soy nuevo en esto, quizás tengo problemas de conceptos...

Espero su ayuda, y muchas gracias!
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

Procedimiento almacenado no funciona

Publicado por Rafael (55 intervenciones) el 14/05/2015 14:57:18
Hola:

Un par de detalles por que si al principio declaras el valor de OK asi:
1
set ok = 0;

Luego tratas de hacerlo asi??
1
SELECT 1 AS ok;

Ahora la clausula AS es para poner un alias... quizas funcionaria si fuera :
1
SELECT 1 INTO ok;
O
1
SELECT ok:=1;


saludos
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

Procedimiento almacenado no funciona

Publicado por Rolando (10 intervenciones) el 14/05/2015 15:13:30
Muchas gracias, pero el problema era en realidad por la función, para poder rescatar el valor tenía que poner algo así como:

id_registro_ateI = (SELECT obtenerSecuencia("id_registro_ate"));

Pero las otras cosas que pusiste como el SELECT 1 INTO ok; es correcto y me ayudó a salir de otro paso, muchas gracias!

Saludos.
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