Sincronizar datos entre tablas
Publicado por Alejandro (1 intervención) el 23/08/2008 19:36:34
Hola, espero puedan darme una mano, tenog un sotre procedure que se encarga de analizar los datos de una tablaq ue quiero mantener actualizada, lo que hago es jalar registros de una DB a una tabla que uso como puente entre la tabla madre y la que recibe informacion, esto para evitar planchar datos pues un campo no puedo alterarlo, loq ue hize fue hacer un delete a una tabla yh darle un insert into cada 30min de los datos de la tabla madre, ya de esa abla en donde inserto todo que es le puente ejecuto un SP que analiza la tabla destion buscando diferencias entre 2 campos, si esos dos campos cambian, lo que hago es actualizarlos, o si otro campo no existe loq ue hago es copiar la fila, llevo meses y no encuentro manera de que funcione espeor me puedan ayudar, loq ue hize fue esto.
ALTER PROCEDURE [dbo].[interface]
-- Add the parameters for the stored procedure here
AS
declare @estado char(10)
declare @clvhospital char(10)
declare @consecutivo char(20)
declare @itemcode nvarchar(20)
declare @Itemname nvarchar(100)
declare @frgname nvarchar(100)
declare @estado1 char(10)
declare @clvhospital1 char(10)
declare @consecutivo1 char(20)
declare @itemcode1 nvarchar(20)
declare @Itemname1 nvarchar(100)
declare @frgname1 nvarchar(100)
select @estado= '0'
select @clvhospital= '99'
select @consecutivo= '02'
select @itemcode= InterfazHH.clave from InterfazHH
select @itemname= InterfazHH.descripcion from InterfazHH
select @frgname= InterfazHH.codigobarras from InterfazHH
select @estado1= '0'
select @clvhospital1= '99'
select @consecutivo1= '02'
select @itemcode1= productosenvio.clave from productosenvio
select @itemname1= productosenvio.descripcion from productosenvio
select @frgname1= productosenvio.codigobarras from productosenvio
BEGIN
set nocount on
if not @itemcode=@itemcode1
begin
update productosenvio
Set estado=@estado, clvhospital=@clvhospital, consecutivo=@consecutivo, clave=@itemcode, codigobarras=@frgname, descripcion=@itemname
where @itemcode1 = @itemcode
end
if not @frgname=@frgname1
begin
update productosenvio
Set estado=@estado, clvhospital=@clvhospital, consecutivo=@consecutivo, clave=@itemcode, codigobarras=@frgname, descripcion=@itemname
where @itemcode1 = @itemcode
end
if not exists (select * from productosenvio where (clave)=@itemcode)
begin
insert into productosenvio (estado, clvhospital, consecutivo, clave, codigobarras, descripcion)
Select @estado, @clvhospital, @consecutivo, @itemcode, @frgname, @itemname
end
END
Y la sintaxis no me marca errores pero al ejecutarlo tenienod agregados productos que no tengo en la tabla receptora no los agrega o actualiza.
PD: No pueod utilizar un trigger por que el campo estado, cambia a 1 y al momenot de actualizar una fila debo cambiarlo a 0. con un trigger no se como diferenciar para que si cambia alguno de los parametros cambie esos datos y estado pase a ser 0, pero los que no hayan cambaido siga conservando el estado con 1. Espero me puedan ayudar.
ALTER PROCEDURE [dbo].[interface]
-- Add the parameters for the stored procedure here
AS
declare @estado char(10)
declare @clvhospital char(10)
declare @consecutivo char(20)
declare @itemcode nvarchar(20)
declare @Itemname nvarchar(100)
declare @frgname nvarchar(100)
declare @estado1 char(10)
declare @clvhospital1 char(10)
declare @consecutivo1 char(20)
declare @itemcode1 nvarchar(20)
declare @Itemname1 nvarchar(100)
declare @frgname1 nvarchar(100)
select @estado= '0'
select @clvhospital= '99'
select @consecutivo= '02'
select @itemcode= InterfazHH.clave from InterfazHH
select @itemname= InterfazHH.descripcion from InterfazHH
select @frgname= InterfazHH.codigobarras from InterfazHH
select @estado1= '0'
select @clvhospital1= '99'
select @consecutivo1= '02'
select @itemcode1= productosenvio.clave from productosenvio
select @itemname1= productosenvio.descripcion from productosenvio
select @frgname1= productosenvio.codigobarras from productosenvio
BEGIN
set nocount on
if not @itemcode=@itemcode1
begin
update productosenvio
Set estado=@estado, clvhospital=@clvhospital, consecutivo=@consecutivo, clave=@itemcode, codigobarras=@frgname, descripcion=@itemname
where @itemcode1 = @itemcode
end
if not @frgname=@frgname1
begin
update productosenvio
Set estado=@estado, clvhospital=@clvhospital, consecutivo=@consecutivo, clave=@itemcode, codigobarras=@frgname, descripcion=@itemname
where @itemcode1 = @itemcode
end
if not exists (select * from productosenvio where (clave)=@itemcode)
begin
insert into productosenvio (estado, clvhospital, consecutivo, clave, codigobarras, descripcion)
Select @estado, @clvhospital, @consecutivo, @itemcode, @frgname, @itemname
end
END
Y la sintaxis no me marca errores pero al ejecutarlo tenienod agregados productos que no tengo en la tabla receptora no los agrega o actualiza.
PD: No pueod utilizar un trigger por que el campo estado, cambia a 1 y al momenot de actualizar una fila debo cambiarlo a 0. con un trigger no se como diferenciar para que si cambia alguno de los parametros cambie esos datos y estado pase a ser 0, pero los que no hayan cambaido siga conservando el estado con 1. Espero me puedan ayudar.
Valora esta pregunta


0