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

Procedure variables de Salida OUT

Estas en el tema de Procedure variables de Salida OUT en el foro de Mysql en Foros del Web. tengo este problema con los procedimientos com variables de salida, SP con variables de entradas, me funcionan bien pero kiero que me enviendo uun mensaje ...
  #1 (permalink)  
Antiguo 14/11/2010, 20:09
Avatar de shinta_snake  
Fecha de Ingreso: diciembre-2009
Mensajes: 70
Antigüedad: 14 años, 11 meses
Puntos: 0
Procedure variables de Salida OUT

tengo este problema con los procedimientos com variables de salida,
SP con variables de entradas, me funcionan bien pero kiero que
me enviendo uun mensaje en pantalla para poder saber si funcionaron bn
o mal, y practicando y leyendo por internet e copiado casi textualmente
el ejercicio de EJEMPLO pero tampoco me funciona
me arroja NULL, porq se debe esto????
alguna idea

Código:
DELIMITER $$

DROP PROCEDURE IF EXISTS `X`.`simpleproc` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `simpleproc`(OUT param1 INT)
BEGIN
  SELECT COUNT(*) INTO param1 FROM catastros;
END $$

DELIMITER ;

CALL simpleproc(@a);
SELECT @a;

CALL simpleproc(@param1);
SELECT @param1;

RESULTADO 

@a
------
NULL
MySQL Query Browser Version. 1.2.12
  #2 (permalink)  
Antiguo 15/11/2010, 03:54
Avatar de 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: 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

Etiquetas: procedure, salida, variables
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 03:11.