Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/06/2014, 12:14
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: Funciones almacenadas : error al invocarla -> Unknown table 'xxx' in field

No estás haciendo ningula lectura de tablas en esa stored function.
En SQL las tablas no se invocan como objetos de clase para obtener algo. Una tabla sólo devuelve algo cuando realizas un SELECT.

Ten en cuenta que la SF se ejecuta en un proceso independiente del proceso donde se ejecuta la query que la invoca.

Yo te propondría algo más parecido a esto:
Código SQL:
Ver original
  1. DROP FUNCTION IF EXISTS get_date_formated;
  2. DELIMITER $$
  3. CREATE FUNCTION get_date_formated(post_date DATE)
  4.     RETURNS CHAR(40)
  5. BEGIN
  6.     DECLARE mes CHAR(40);
  7.     DECLARE dia CHAR(40);
  8.  
  9.     CASE MONTH(post_date)
  10.       WHEN 1 THEN
  11.             SET mes='Enero';
  12.       WHEN 2 THEN
  13.          SET mes = 'Febrero';
  14.       WHEN 3 THEN
  15.          SET mes = 'Marzo';
  16.       WHEN 4 THEN
  17.          SET mes = 'Abril';
  18.       WHEN 5 THEN
  19.          SET mes = 'Mayo';
  20.       WHEN 6 THEN
  21.          SET mes = 'Junio';
  22.       WHEN 7 THEN
  23.          SET mes = 'Julio';
  24.       WHEN 8 THEN
  25.          SET mes = 'Agosto';
  26.       WHEN 9 THEN
  27.          SET mes = 'Septiembre';
  28.       WHEN 10 THEN
  29.          SET mes = 'Octubre';
  30.       WHEN 11 THEN
  31.          SET mes = 'Noviembre';
  32.       WHEN 12 THEN
  33.          SET mes = 'Diciembre';
  34.     END CASE;
  35.  
  36.     CASE DAYOFWEEK(post_date)
  37.       WHEN 7 THEN
  38.          SET dia = 'Sabado';
  39.       WHEN 1 THEN
  40.          SET dia = 'Domingo';
  41.       WHEN 2 THEN
  42.          SET dia = 'Lunes';
  43.       WHEN 3 THEN
  44.          SET dia = 'Martes';
  45.       WHEN 4 THEN
  46.          SET dia = 'Miercoles';
  47.       WHEN 5 THEN
  48.          SET dia = 'Jueves';
  49.       WHEN 6 THEN
  50.          SET dia = 'Viernes';
  51.     END CASE;
  52.  
  53.     RETURN CONCAT (dia, ' ' , DAY(post_date), ' de ' mes, ' de ' YEAR(post_date));
  54. END;
  55. $$
  56. DELIMITER ;
Nota: post_date es una variable local. No es la columna de la tabla.
__________________
¿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; 19/06/2014 a las 12:28