MySQL - Ayuda Procedure MySql

 
Vista:

Ayuda Procedure MySql

Publicado por zeonet (1 intervención) el 27/11/2005 20:18:54
Buenas a todos,

Tengo un problemilla el cual ya me está superando con un procedure de mysql y me gustaría que alguno de vosotros me pudiera echar una mano.

El procedure en cuestión debería devolverme el contenido de una tabla llamada "tpregunta", (que almacena la pregunta que se le hace a un usuario cuando se registra en una página, por si en un futuro olvida su password), la tabla es esta:

CREATE TABLE tpregunta (
precod int(2) AUTO_INCREMENT NOT NULL, // IDENTIFICADOR DE LA PREGUNTA
prefra varchar(40) NOT NULL, // TEXTO DE LA PREGUNTA
PRIMARY KEY(precod)
);

su contenido es este:
---------------------------------------------------------------------------------------------------------------------
precod prefra
-------------- --------------------------------------------------------------------------
1 Cual es el nombre de tu mascota?
2 Cual es el nombre de tu padre?
3 Cual es el nombre de tu madre?
----------------------------------------------------------------------------------------------------------------------

y el procedure es este:
-------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE pregunta_obtener (
in codigopre int,
in pregunta varchar(30)
)
begin
declare inicio varchar(2000);
declare medio varchar(2000);
declare fin varchar(21);
declare resultado varchar(2000);
set fin = ' order by prefra desc';
set inicio = 'select * from tpregunta';
set medio = '';
set resultado = '';
if codigopre <> 0 then
begin
if medio <> 0 then
set medio = concat(medio,' and');
else
set medio = ' where';
end if;
set medio = concat(medio,' precod = ',codigopre);
end;
end if;
if pregunta <> '' then
begin
if medio <> '' then
set medio = concat(medio,' and');
else
set medio = ' where';
end if;
set medio = concat(medio,' prefra = ',pregunta);
end;
end if;
if medio <> '' then
set resultado = concat(inicio,medio,fin);
else
set resultado = concat(inicio,fin);
end if;
select resultado;
end
;
--------------------------------------------------------------------------------------------------------------------------
Vale, despues cuando ejecuto el procedure:
CALL pregunta_obtener(0, '' );
lo único que obtengo es una jodida columna en la cual me aparece como resultado
la cadena que debería hacer la sentencia. (select * from...)

Me gustaría saber si hay alguna forma de que este procedure me devuelva el contenido de la tabla Tpregunta, si hay algún comando que ejecute la cadena que
contiene la variable "resultado", un tipo exec(resultado) como en sqlServer.

Espero vuestras respuestas que me ilustren y muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda Procedure MySql

Publicado por Kamilon (4 intervenciones) el 03/04/2006 23:25:50
Utiliza "PREPARED" y "EXECUTE"

http://dev.mysql.com/doc/refman/5.0/en/sqlps.html

ordenas un poco tu codigo y lo ejecutas.

Eso es todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar