Ver Mensaje Individual
  #8 (permalink)  
Antiguo 24/09/2009, 07:36
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: Un error en CREATE PROCEDURE que no encuentro la solución :

Existen dos formas:
1. Con un procedimiento almacenado, se pasa un parámetro como OUT o INOUT:
Código SQL:
Ver original
  1. CREATE PROCEDURE hola (OUT nombre CHAR(100))
  2. BEGIN
  3. -- ....
  4. END;
2. Con una función, los parámetros de entrada son siempre IN y la salida es única y es parte del prototipo:
Código SQL:
Ver original
  1. CREATE FUNCTION hola (OUT nombre CHAR(100)) RETURNS CHAR(100)
  2. READS SQL DATA
  3. BEGIN
  4. -- ....
  5. END;
El READS SQL DATA es para evitar problemas de modo de servidor, ya que debe determinarse qué es lo que hará.

Ahora bien, Dentro de cualquier script, un procedure se llama con CALL:

Código sql:
Ver original
  1. CREATE TRIGGER dar_la_mano
  2. BEFORE INSERT
  3. ON saludos FOR EACH ROW
  4. BEGIN
  5. .....
  6. CALL hola (NEW.nombre);
  7. .....
  8. END;

Mientras que un SF se invoca directamente, pero debe meter el resultado en alguna parte:
Código sql:
Ver original
  1. CREATE TRIGGER dar_la_mano
  2. BEFORE INSERT
  3. ON saludos FOR EACH ROW
  4. BEGIN
  5. .....
  6. @saludo:=hola (NEW.nombre);
  7. .....
  8. END;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)