Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/11/2010, 03:54
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: Procedure variables de Salida OUT

Porque son param1 y @param1 son variables diferentes.
El parámetro param1 es una variable local del SP, y @param1 es otra variable distinta, de las que se denomina "variable de usuario", las que son globales, permanentes, dependientes de la conexión y además carecen de tipo si no se las inicializa, siendo su valor por default NULL.

Las variables locales de un SP deben declararse en todos los casos, mientras que las variables de usuario, identificadas por su "@", empiezan a existir desde el momento en que la usas, pero como carecen de tipo de dato debes inicializarlas asignandole uno.
Ahora bien, este tipo de variables se pueden usar en un SP, pero no pertenecen a él, sino a la conexión (login del usuario) activa en ese momento. Por esta razón son invisibles para otros usuarios y también permanecen y mantienen el último valor ingresado, más allá de los SP donde se usen.
Otro detalle que debes tener en cuenta al usarlas es que cambian su valor con cada operación hecha con ella, lo que las hace aptas para usarlas dentro de un SELECT, pero en ese caso deben ser usadas con cuidado y sólo con el operador ":=".

Nale una buena leida al manual de referencia:
MySQL :: 19 Procedimientos almacenados y funciones
__________________
¿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; 15/11/2010 a las 04:14