Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2009, 16:38
raztafari123
 
Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 18 años, 2 meses
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.