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

insertar registros de una tabla en otra con store procedure sp

Estas en el tema de insertar registros de una tabla en otra con store procedure sp en el foro de Mysql en Foros del Web. Hola listeros. Me he trasnochado durante el fin de semana para tratar de hacer un sp que me actualice unas tablas. Es el siguiente con ...
  #1 (permalink)  
Antiguo 02/09/2007, 20:37
 
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 19
Antigüedad: 17 años
Puntos: 1
Pregunta insertar registros de una tabla en otra con store procedure sp

Hola listeros.
Me he trasnochado durante el fin de semana para tratar de hacer un sp que me actualice unas tablas. Es el siguiente con algo de resumen:

CREATE DEFINER=`root`@`localhost` PROCEDURE `prueba`(OUT param INT,OUT param1 INT,OUT param2 INT)
begin
declare done, done1 int default 0;
declare variables;
declare cItemPedido1 cursor for SELECT consulta;
declare cEntrega1 cursor for SELECT consulta;
declare cItem1 cursor for SELECT consulta;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
open cItemPedido1;
set param=0;
set param1=0;
set param2=0;
repeat
FETCH cItemPedido1 into variables;
if not done then
if _CodItem > 3046 then
open cItem1;
FETCH cItem1 into variables;
if not done then
insert into Item (campos) values (variables);
set param1 = param1+1;
end if;
SELECT LAST_INSERT_ID() into _CodItem1;
close cItem1;
else
set _CodItem1 = _CodItem;
end if;
open cEntrega1;
repeat
FETCH cEntrega1 into variables;
if not done then
INSERT INTO Entrega (campos) values (variables);
set param2=param2+1;
end if;
until done end repeat;
set done = 1;
close cEntrega1;
insert into ItemPedido (campos) values (variables);
set param = param+1;
end if;
until done end repeat;
close cItemPedido1;
end

Las variables de salida param las utilizo para saber cuando registros se procesaron, pero me da todo 1, es decir que solo me hace un ciclo.
Todo ocurrio porque tengo el repeat dentro de otro repeat con una sola variable logica, llama done, pero no sé como declarar otra o como se hace para que un cursor padre recorra un cursor hijo.
Si le quito el curso hijo, cEntrega1; dentro del repeat mas grande o padre, cItemPedido1, entonces si hace todo el recorrido.
El problema pudiera estar en el repeat o la declaracipn del Handler, pero no sé porque estoy empezando con esto.
Mucha gracias por la ayuda que puedan brindarme.

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 02:11.