
30/04/2009, 16:38
|
| | Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 19 años, 1 mes Puntos: 0 | |
ayuda con procedure recien estoy en mysql, estoy tratando de hacer un store procedure en el cual en dos cursores guardo dos query y trato de comparar la igualdad de un campo con el otro con un like veanlo:
Código:
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `BDCheck`.`sp_comp_riesgo`(in fecha_inic date, in fecha_fin date)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE emp VARCHAR(255);
DECLARE tipo_form INT(8);
DECLARE cod VARCHAR(16);
DECLARE nomb VARCHAR(120);
DECLARE dist VARCHAR(60);
DECLARE fechaI DATE;
DECLARE fechaF DATE;
DECLARE emp2 VARCHAR(255);
DECLARE cur_pedido CURSOR FOR
select verif_cen_lab as empresa,
id_tip_formulario,
concat(id_cliente,'-',id_pedido) as codigo,
concat(ape_pat,' ',ape_mat,' ',verif_nombre) as nombre,
b.dsc_distrito as distrito,
concat(fecha,' ',hora) as fechaIngreso,
fecha_act as fechaAct
from t_pedido a
inner join t_distrito b
on a.id_distrito=b.id_distrito and fecha between fecha_inic and fecha_fin
UNION
select nom_empresa as empresa,
id_tip_formulario,
concat(id_cliente,'-',id_pedido) as codigo,
concat(ape_pat,' ',ape_mat,' ',verif_nombre) as nombre,
b.dsc_distrito as distrito,
concat(fecha,' ',hora) as fechaIngreso,
fecha_act as fechaAct
from t_pedido a
inner join t_distrito b
on a.id_distrito=b.id_distrito and fecha between fecha_inic and fecha_fin
UNION
select verif_direccion as empresa,id_tip_formulario,
concat(id_cliente,'-',id_pedido) as codigo,
concat(ape_pat,' ',ape_mat,' ',verif_nombre) as nombre,
b.dsc_distrito as distrito,
concat(fecha,' ',hora) as fechaIngreso,
fecha_act as fechaAct
from t_pedido a
inner join t_distrito b
on a.id_distrito=b.id_distrito and fecha between fecha_inic and fecha_fin
where id_pers_cont='194';
-- pasamos los valores al cursor cur_riesgo
DECLARE cur_riesgo CURSOR FOR SELECT pClave FROM t_riesgo;
-- FOR SELECT REPLACE (pClave,'%',' ')
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur_pedido;
OPEN cur_riesgo;
REPEAT
FETCH cur_pedido INTO emp, tipo_form,cod, nomb, dist, fechaI,fechaF;
FETCH cur_riesgo INTO emp2;
if NOT done THEN
IF emp2 like'%emp%' THEN
select emp, tipo_form,cod,nomb,dist, fechaI,fechaF;
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur_riesgo;
CLOSE cur_pedido;
END$$
DELIMITER ;
y ´lo que deseo hacer con eso es imprimir los registros con si fuera un select
osea pretendo que trabajen como 2 for() los cursores para que compare emp con emp2 con un like y si emp2 esta dentro de emp que imprima un registro y sai sucesivamente, hasta la ultima igualdad, haber si alguien me ayuda a optimizar. se lo agradezco de antemano.
SAludos. |