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

Funciones almacenadas : error al invocarla -> Unknown table 'xxx' in field list

Estas en el tema de Funciones almacenadas : error al invocarla -> Unknown table 'xxx' in field list en el foro de Mysql en Foros del Web. HOLA Estoy escribiendo una "funcion almacenada" en MySQL solo por aprender y no tengo mayor problemas con ella salvo al invocarla: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: ...
  #1 (permalink)  
Antiguo 19/06/2014, 12:05
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Busqueda Funciones almacenadas : error al invocarla -> Unknown table 'xxx' in field list

HOLA

Estoy escribiendo una "funcion almacenada" en MySQL solo por aprender y no tengo mayor problemas con ella salvo al invocarla:

Código MySQL:
Ver original
  1. SELECT get_date_formated() as fecha_ok FROM `wp_posts` WHERE id=2;

Me dice que 'post_date' no esta en la lista de tablas... y que la cualifique no cambia en nada la cosa:

Cita:
Unknown table 'wp_posts' in field list

Aqui mi funcion almacenada:

Código MySQL:
Ver original
  1. DROP FUNCTION IF EXISTS get_date_formated;
  2. DELIMITER $$
  3. CREATE FUNCTION get_date_formated()
  4.     RETURNS CHAR(40)
  5.     DECLARE salida CHAR(40);       
  6.  
  7.     SET mes = CAST(MONTH(`wp_posts`.post_date) AS CHAR));
  8.    
  9.     REPLACE(mes, '1', 'Enero');
  10.     REPLACE(mes, '2', 'Febrero');
  11.     REPLACE(mes, '3', 'Marzo');
  12.     REPLACE(mes, '4', 'Abril');
  13.     REPLACE(mes, '5', 'Mayo');
  14.     REPLACE(mes, '6', 'Junio');
  15.     REPLACE(mes, '7', 'Julio');
  16.     REPLACE(mes, '8', 'Agosto');
  17.     REPLACE(mes, '9', 'Setiembre');
  18.     REPLACE(mes, '10', 'Octubre');
  19.     REPLACE(mes, '11', 'Noviembre');
  20.     REPLACE(mes, '12', 'Diciembre');   
  21.    
  22.     SET salida =
  23.         CONCAT(
  24.             CASE DAYOFWEEK(`wp_posts`.post_date)
  25.                 WHEN 7 then 'Sabado'
  26.                 WHEN 1 then 'Domingo'
  27.                 WHEN 2 then 'Lunes'
  28.                 WHEN 3 then 'Martes'
  29.                 WHEN 4 then 'Miercoles'
  30.                 WHEN 5 then 'Jueves'
  31.                 WHEN 6 then 'Viernes'
  32.                 ELSE 'error'
  33.             end,', ',DAY(`wp_posts`.post_date),' de ',mes,' del ',YEAR(`wp_posts`.post_date)
  34.         );     
  35.         RETURN salida;
  36. $$
  37. DELIMITER ;

La idea es obtener algo como "Jueves, 12 de Junio del 2014" como solicitan en un post de PHP que @gnzsolaya ha visto tambien
__________________
Salu2!
  #2 (permalink)  
Antiguo 19/06/2014, 12:14
Avatar de 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, 4 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
  #3 (permalink)  
Antiguo 19/06/2014, 13:52
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funciones almacenadas : error al invocarla -> Unknown table 'xxx' in field

@gnzsoloyo : gracias y debo agregar que me gusto mucho al "vuelta de tuerca" que le diste para poder resolver lo que explicas primero.

Muchisimas gracias!!!!!
__________________
Salu2!
  #4 (permalink)  
Antiguo 19/06/2014, 14:34
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Funciones almacenadas : error al invocarla -> Unknown table 'xxx' in field



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

Etiquetas: almacenadas, field, funciones, list, select, sql, tabla, table, unknown, xxx
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 04:18.