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

Problema con Store Procedure

Estas en el tema de Problema con Store Procedure en el foro de Mysql en Foros del Web. Hola estoy teniendo un problema con una SP, siempre que lo ejecuto me tira todos los registros. Para mi que es el "whereClause" del select, ...
  #1 (permalink)  
Antiguo 12/03/2008, 00:45
 
Fecha de Ingreso: julio-2004
Ubicación: Montevideo, Uruguay
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
Problema con Store Procedure

Hola estoy teniendo un problema con una SP, siempre que lo ejecuto me tira todos los registros.
Para mi que es el "whereClause" del select, pero se tendría que mostrar bien.
La idea fue crear un SP que sirviera para mostrar noticias publicadas, no-publicadas y todas.
EL parámetro de entrada es: "in inPublicadas bool"

Código del SP:
Código:
DECLARE whereClause VARCHAR(255);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
IF inPublicadas = TRUE THEN
	SET whereClause = "WHERE not_publicada = 1";
ELSEIF inPublicadas = FALSE THEN
	SET whereClause = "WHERE not_publicada = 0";
ELSE SET whereClause = "";
END IF;
SELECT *
FROM noticias
whereClause
ORDER BY not_fecha
;
Script de creación de la tabla:
Código:
CREATE TABLE `noticias` (                                                   
            `not_id` int(11) NOT NULL auto_increment,                                 
            `not_titulo` varchar(255) NOT NULL,                                       
            `not_noticia` text NOT NULL,                                              
            `not_fecha` datetime NOT NULL,                                            
            `not_publicada` tinyint(1) NOT NULL default '0' COMMENT '1 = publicado',  
            PRIMARY KEY  (`not_id`)                                                   
          ) ENGINE=InnoDB DEFAULT CHARSET=latin1
El SP lo llamo con "CALL SelectNoticias(0);" o "CALL SelectNoticias(1);" .... o TRUE o FALSE y siempre me da lo mismo.
  #2 (permalink)  
Antiguo 12/03/2008, 04: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
Re: Problema con Store Procedure

WhereClause esttá actuando como alias de la tabla "Noticias", no como contenedor de una cláusula WHERE.
Mi sugerencia es que uses un CASE.. WHEN... END CASE, con las opciones WHERE que quieres
  #3 (permalink)  
Antiguo 12/03/2008, 06:14
 
Fecha de Ingreso: julio-2004
Ubicación: Montevideo, Uruguay
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Problema con Store Procedure

Gracias por el consejo, pero esto también me da error en el case.

Código:
SELECT *
FROM noticias
CASE inPublicadas
	WHEN 1 THEN "WHERE not_publicada = 1"
	WHEN 0 THEN "WHERE not_publicada = 0"
	ELSE
END CASE
ORDER BY not_fecha
;
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE inPublicadas
WHEN 1 THEN "WHERE not_publicada = 1"
WHEN 0 THEN "WHERE not' at line 5
(0 ms taken)
  #4 (permalink)  
Antiguo 12/03/2008, 08:17
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
Re: Problema con Store Procedure

Tienes que poner el SELECT que quieras dentro del case correcto:
Código:
CASE inPublicadas
   WHEN 1 THEN 
      SELECT * FROM noticias WHERE not_publicada = 1 ORDER BY not_fecha;
   WHEN 0 THEN 
      SELECT * FROM noticias WHERE not_publicada = 0 ORDER BY not_fecha;
   ELSE
END CASE;
  #5 (permalink)  
Antiguo 12/03/2008, 08:28
 
Fecha de Ingreso: julio-2004
Ubicación: Montevideo, Uruguay
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Problema con Store Procedure

Muchas gracias MUCHAS!!! .... funciona perfecto
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 18:48.