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

ayuda con procedure

Estas en el tema de ayuda con procedure en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/04/2009, 16:38
 
Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 18 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.
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 22:41.