Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/06/2009, 16:49
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: mysql y control de flujo. ayuda

Vamos por el principio: Una STORED FUNTION es na rutina que recibe parámetros sólo de entrada y retorna un único valor. ç¿Eso está claro, no?
Bueno, como rutina almacenada tiene como restricción que habitualmente resuelve alguna situación sin necesidad de leer tablas. En ese sentido, por lo general, si quisieras poner un SELECT a una tabla, éste debería dar error al cargar la function, pero habitualmente no lo hace.
De todos modos eso puede pasar si quieres restaurar la function en un backup de la base: da un error de rutina.
La cosa es fácil: la sintaxis debe incluir dentro de su encabezado la cláusula READS SQL DATA de esta forma:
Código sql:
Ver original
  1. DELIMITER $$
  2. DROP FUNCTION IF EXISTS check_template$$
  3. CREATE FUNTION check_template(id INT) RETURNS INTEGER
  4. READS SQL DATA
  5. BEGIN
  6.     DECLARE tema INT DEFAULT 0;
  7.     SELECT predeterminado INTO tema FROM THEMES WHERE id_theme=id;
  8.     RETURN tema;
  9. END$$
  10. DELIMITER ;
Esto recibe un valor de id, y devuelve el contenido del campo `predeterminado` o NULL si no existe.

¿Esa sería la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)