Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Recorrer consulta en store procedure

Estas en el tema de Recorrer consulta en store procedure en el foro de Mysql en Foros del Web. Saludos, implemente un código que vi aquí mismo pero me marca un error, para no revivir temas viejos escribí este, aquí anexo el código @import ...
  #1 (permalink)  
Antiguo 29/02/2016, 18:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 59
Antigüedad: 16 años, 1 mes
Puntos: 0
Recorrer consulta en store procedure

Saludos, implemente un código que vi aquí mismo pero me marca un error, para no revivir temas viejos escribí este, aquí anexo el código

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE PROCEDURE sp_inventario(IN codigo CHAR(12))
  4.  
  5.    
  6.     DECLARE accion INT DEFAULT 0;
  7.     DECLARE cantidad INT;
  8.     DECLARE contador INT DEFAULT 1;
  9.        
  10.  
  11.  
  12.     DECLARE cursor_1 CURSOR FOR
  13.     SELECT cantidad
  14.     FROM t_inventario;
  15.  
  16.     DECLARE CONTINUE HANDLER salida FOR SQLSTATE '20000' SET accion = 1;
  17.  
  18.    
  19.     OPEN cursor_1;
  20.     REPEAT
  21.         FETCH cursor_1 INTO cantidad;
  22.        
  23.         SET contador = contador+1;
  24.        
  25.     UNTIL salida END REPEAT;
  26.     CLOSE cursor_1;
  27.    
  28. END$$
  29.  
  30. DELIMITER ;

El error lo marca por la existencia de "salida" en la declaración del HANDLER, si le quito la palabra salida crea sin problemas el SP pero cuando llamo al sp me devuelve
Unknown column 'salida' in 'field list'


gracias por el apoyo
  #2 (permalink)  
Antiguo 29/02/2016, 20:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Recorrer consulta en store procedure

Quitarle el "salida" y deja el resto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/03/2016, 08:05
 
Fecha de Ingreso: marzo-2008
Mensajes: 59
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Recorrer consulta en store procedure

Gracias por tu respuesta, le quite el salida del HANDLER y se genera bien el SP pero como comentaba cuando lo llamo me devuelve esto

Error Code : 1054
Unknown column 'salida' in 'field list'

Gracias de antemano
  #4 (permalink)  
Antiguo 01/03/2016, 08:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Recorrer consulta en store procedure

Código MySQL:
Ver original
  1. UNTIL accion END REPEAT;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 01/03/2016, 09:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 59
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Recorrer consulta en store procedure

Con ese cambio se soluciono el error, sin embargo lo ejecuto y me devuelve

Error Code : 1329
No data - zero rows fetched, selected, or processed


si ejecuto la consulta por fuera , si me devuelve datos.

Saludos
  #6 (permalink)  
Antiguo 01/03/2016, 10:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Recorrer consulta en store procedure

Tengo una pequeña sospecha: Cambia el nombre de la variable local "cantidad" por otro nombre.

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE PROCEDURE sp_inventario(IN vcodigo CHAR(12))
  4.  
  5.    
  6.     DECLARE accion INT DEFAULT 0;
  7.     DECLARE vcantidad INT;
  8.     DECLARE contador INT DEFAULT 1;
  9.        
  10.  
  11.  
  12.     DECLARE cursor_1 CURSOR FOR
  13.     SELECT cantidad
  14.     FROM t_inventario
  15.     WHERE codigo = vocdigo ;
  16.  
  17.     DECLARE CONTINUE HANDLER FOR SQLSTATE '20000' SET accion = 1;
  18.  
  19.    
  20.     OPEN cursor_1;
  21.     REPEAT
  22.         FETCH cursor_1 INTO vcantidad;
  23.        
  24.         SET contador = contador+1;
  25.        
  26.     UNTIL accion END REPEAT;
  27.     CLOSE cursor_1;
  28.    
  29. END$$
  30.  
  31. DELIMITER ;

Partamos de la base que este SP se está llamando con un parámetro de entrada, por lo que el parámetro tiene que estar siendo usado en alguna part, y no lo estabas haciendo.
Por otro lado, no se deben usar iguales nombres en las variables locales, el prototipo de la llamada, columnas y tablas, dado que pueden hacer que el manejador de nombres de MySQL confunda una cosa con otra, dando resultados inconsistentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 01/03/2016, 17:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 59
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Recorrer consulta en store procedure

Te comento ya encontré la solución, el error SQL es 02000 , el que vienen en el ejemplo es 20000

Saludos!

Muchas gracias por el apoyo

Etiquetas: procedure, select, sql, store
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:30.