Ver Mensaje Individual
  #24 (permalink)  
Antiguo 04/03/2011, 06:48
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Resultado null de una select en un procedimiento almacenado

Gracias por darme acceso al backup. Si lo quieres retirar ya, no hay problema.
Estuve probando y revisando todo luego de cargar la base de prueba y hay algunos detalles que resolver:
- La tabla "VENTAS_CLIENTE_REPRE_BACKUP" carece de PK, por lo que puede llegar a registrarse más de un backup conteniendo los mismos datos. Eso puede ser eventualmente un error, que favorece que se llene de "basura". La misma tabla tampoco evita que sus valores sea null, lo que también ayuda a guardar datos "basura".
- El backup muestra que se han almacenado datos "basura", lo que te dará problemas al momento de realizar pruebas.
- Un error que debes estar recibiendo es que la consulta devmuelve más de una fila. Eso sucede en esta parte:
Código MySQL:
Ver original
  1. SELECT ANYTRA, MESTRA, NOMMES FROM VENTAS_CLIENTE_REPRE_BACKUP
  2. INTO ANYTRA, MESTRA, NOMMES;
Como la tabla contiene más de un registro, no puedes volcarlo a variables sin antes restringir la cantidad de registros devueltos a uno solo.
- Lo que comprobé es que los valores no se insertan en la tabla en cuestión cuando se usan los nombres de las columnas como nombres de variables. Deben ser diferentes.

Lo que quisiera que me expliques es el sentido de este último segmento, luego de cerrar el cursor. ¿Por qué pones esos NULL?:
Código MySQL:
Ver original
  1. SELECT MAX(ANYTRA), MAX(MESTRA), NOMMES FROM VENTAS_CLIENTE_REPRE_BACKUP LIMIT 1
  2.   INTO VANYTRA, VMESTRA, VNOMMES;
  3.  
  4.   INSERT INTO VENTAS_CLIENTE_REPRE_BACKUP VALUES
  5. (VANYTRA, 1, 'ENERO', 45, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 04/03/2011 a las 07:02