Ver Mensaje Individual
  #18 (permalink)  
Antiguo 03/03/2011, 08:32
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: 16 años, 5 meses
Puntos: 2658
Respuesta: Resultado null de una select en un procedimiento almacenado

Francamente me gustaría hacer pruebas directas para terminar de analizar por qué te da ese resultado. Sería bueno contar con una copia de la base para probar, pero bueno...
Respecto a los nombres, MySQL trabaja en forma jerárquica con los objetos de base de datos, por eso no es buena práctica usar los mismos nombres entre objetos distintos, como es el caso de mismo nombre para tablas, bases, columnas o variables. Eso puede hacer confundir al parser.
Uno de los resultados que he visto en ocasiones es que si pones el mismo nombre a una variable que a una tabla, la sentencia SET variable = variable devuelve NULL, porque no se puede asignar una tabla a una variable en MySQL. Esto pasa porque el objeto de mayor jerarquía pisa al de menor, y el parser interpreta que te refieres a la tabla...
Además de eso, si usas variables de usuario (las que llevan "@" como prefijo), deben ser inicializadas antes de ser usadas, porque su valor inicial es siempre NULL. Por eso un
Código MySQL:
Ver original
  1. SELECT A FROM tabla INTO @B
devuelve un NULL.
Para usarla lo primero es incializarla con un valor que le defina el tipo (que tampoco tienen), y además que sea un valor sin significado:
Código MySQL:
Ver original
  1. SET @v_anytra = 0;
  2. SET @v_anytra = T_ANYTRA;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)