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

store procedure

Estas en el tema de store procedure en el foro de Mysql en Foros del Web. hola buenas estoy empezando a trabajar con store procedure combinado con la generacion de un archivo txt con los resultados, el problema es q nada ...
  #1 (permalink)  
Antiguo 03/01/2012, 10:26
 
Fecha de Ingreso: agosto-2008
Mensajes: 94
Antigüedad: 13 años, 1 mes
Puntos: 0
store procedure

hola buenas estoy empezando a trabajar con store procedure combinado con la generacion de un archivo txt con los resultados, el problema es q nada mas se guarda un solo registro en el archivo, quisiera saber si tengo algun error en el codigo, adjunto el codigo, cuando ejecuto el select solamente aparte me trae 41 registros y en el archivo solo se encuentra 1. muchas gracias por su ayuda

[MYSQL]
DROP PROCEDURE IF EXISTS prueba;
SET sql_mode = 'PIPES_AS_CONCAT';
DELIMITER //
CREATE PROCEDURE prueba()
BEGIN
DECLARE vregistro TEXT(276);
DECLARE vdireccion CHAR(255);
DECLARE vco_cte CHAR(11);
DECLARE vnu_rif CHAR(10);
DECLARE vnb_lugar CHAR(40);
DECLARE vcalle_av CHAR(45);
DECLARE vcasa_edf CHAR(30);
DECLARE vapto_ofc CHAR(40);
DECLARE vurbn CHAR(30);
DECLARE vprrq CHAR(30);
DECLARE vmunc CHAR(20);
DECLARE vnb_cdad CHAR(20);
DECLARE sw INTEGER;
DECLARE error INTEGER;
DECLARE vacio INT DEFAULT 0;
DECLARE cursor1 CURSOR FOR
SELECT DISTINCT c.co_cte
,c.nu_rif
,ui.nb_lugar
,d.casaedificio
,d.aptooficina
,d.calleavenida
,d.urbanizacion
,d.parroquia
,d.municipio
,cd.nombreciudad
FROM v_instalacion i
, v_ubic_instalacion ui
, v_cliente c
, direccion d
, ciudad cd
WHERE i.orig_copia=0 AND
i.stat_instl in (0,8) AND
ui.instl=i.instl AND
ui.t_lugar=1 AND
i.co_cte=c.co_cte AND
c.nni_negc=9 AND
ui.nb_lugar=d.nombrelugar AND
d.codciudad=cd.codciudad
ORDER BY 1,2,3;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vacio= 1;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET error = 1;

SET vdireccion =' ';
SET vregistro = ' ';
SET sw = 0;

OPEN cursor1;
loop_cursor1: LOOP

FETCH cursor1 INTO vco_cte,vnu_rif,vnb_lugar,vcasa_edf,vapto_ofc,vcal le_av,vurbn,vprrq,vmunc,vnb_cdad;
IF (vacio = 1) THEN
LEAVE loop_cursor1;
END IF;

SET vdireccion = vnb_lugar;
SET vregistro=vco_cte||"|"||vnu_rif||"|"||TRIM(vdirecc ion)||"|";

IF sw = 0 THEN
SELECT vregistro INTO OUTFILE "E:/Documents and Settings/m/Escritorio/spl/dir_ctes_saucos.txt" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';
SET sw = 1;
ELSE
SELECT vregistro INTO OUTFILE "E:/Documents and Settings/m/Escritorio/spl/dir_ctes_saucos.txt" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';
END IF;

SET vregistro = ' ';

END LOOP loop_cursor1;
CLOSE cursor1;

SET vacio= 0;

END;
//
DELIMITER ;
call prueba();
[/MYSQL]
  #2 (permalink)  
Antiguo 03/01/2012, 11:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 13 años, 9 meses
Puntos: 2658
Respuesta: store procedure

Te crea un sólo registro porque con cada registro volcado destruye el archivo anterior. Esa forma de volcado sirve sólo para un volcado de datos con una sola sentencia y no para recorrer iterativamente la tabla.
Además, INTO OUTFILE sólo funciona en la PC del servidor de MySQL. No puedes usarlo en modo remoto porque el archivo se generará en la carpeta /bin del server.
La tarea que te propones hacer es más sencilla de hacer por programación en un lenguaje, y no con la consulta que planteas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/01/2012, 12:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 94
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: store procedure

hola gnzsoloyo gracias por tu ayuda entonces como creo el archivo txt para recorrer iterativamente la tabla? con respecto al into outfile no hay problema porq no voy a usarlo en modo remoto sino en la pc de servidor de mysql. Lo q pasa es q debo realizarlo dentro de un store procedure. gracias por su ayuda

Etiquetas: procedure, select, sql, store
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:46.