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

Procedimiento almacenado dinamico

Estas en el tema de Procedimiento almacenado dinamico en el foro de Mysql en Foros del Web. Hola tengo un problema y la vdd no hay mucha documentacion de sp. espero que me ayuden miren tengo que hacer lo siguiente yo envio ...
  #1 (permalink)  
Antiguo 31/05/2009, 02:34
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 15 años, 11 meses
Puntos: 7
De acuerdo Procedimiento almacenado dinamico

Hola tengo un problema y la vdd no hay mucha documentacion de sp. espero que me ayuden

miren tengo que hacer lo siguiente
yo envio un form recojo las variables entonces, si en alguna sale el valor 009098, entonces debera hacer un query de lo contrario otro.. es confuso si pero vean el ejemplo.

Código PHP:
DELIMITER $$

DROP PROCEDURE IF EXISTS `database`.`fun` $$
CREATE DEFINER=`xxxxx`@`xxxxxPROCEDURE `fun`(IN id intIN tipo integerIN fec1 dateIN fec2 date)
begin

//declaro la variable que va ser agregada al query
declare queryy char;
//si la variable tipo es todos entonces el query se deja en blanco
if tipo "todos" then
set queryy 
"  ";
//si la variable tipo no es todos entonces se agrega la asignacion
else
set queryy " esta_id = tipo";
end if;

//continua fec1 y fec2 ....

select *
from reportes
//se agrega la variable querry, seria como un echo en php
where obj_id id  queryy
group by obj_name
;

end $$

DELIMITER 
hey gracias de veras es importante,. espero haberme dado a entender
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.
  #2 (permalink)  
Antiguo 31/05/2009, 07:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Procedimiento almacenado dinamico

Por lo que entendí del ejemplo, quieres una consulta preparada que ejecute una consulta dependiendo de los parametros de entrada.

si es así, esto te puede servir. (Hice la prueba en una tabla mía)

Código mysql:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE PROCEDURE `fun`(IN id int, IN tipo integer)
  4.  
  5. #declaro la variable que va ser agregada al query
  6. declare queryy varchar(30);
  7. #si la variable tipo es todos entonces el query se deja en blanco
  8. if tipo = 1 then
  9. set queryy = " ";
  10. #si la variable tipo no es todos entonces se agrega la asignacion
  11. set queryy = concat("where id = ",id);
  12. #se prepara la consulta en una variable;
  13. set @queryy1 = concat("select *from personas ",queryy);
  14. #asignacion de variable a ejecucion
  15. prepare stmt from @queryy1;
  16. execute stmt;
  17. end $$
  18.  
  19. DELIMITER ;

fijate que si es uno, no tiene condición, pero si es diferente de uno, aplica la condición.

Código mysql:
Ver original
  1. mysql> call fun(1,1);
  2. +------+---------------+
  3. | id   | nombre        |
  4. +------+---------------+
  5. |    1 | daniel        |
  6. |    2 | maria daniela |
  7. +------+---------------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. Query OK, 0 rows affected (0.01 sec)
  11.  
  12. mysql> call fun(1,2);
  13. +------+--------+
  14. | id   | nombre |
  15. +------+--------+
  16. |    1 | daniel |
  17. +------+--------+
  18. 1 row in set (0.00 sec)
  19.  
  20. Query OK, 0 rows affected (0.00 sec)

Espero te sirva.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 11:54.