Hola amigos, a continuación les muestro el código de un procedimiento almacenado en SQL Server 2008 que me permite obtener el tipo de cambio de compra y venta de SUNAT del día actual, una vez obtenido ambos tipos de cambio los inserto en una tabla de mi base de datos.
Espero les sea de utilidad.
Código:
create procedure spr_cpsObtenerTipoCambioSunat
as
begin
Declare @Object as Int;
Declare @responseText as varchar(8000);
set dateformat dmy
declare @dFecha_Actual datetime
declare @sFecha_Actual varchar(300)
declare @anio_Actual varchar(6)
declare @mes_Actual varchar(4)
declare @dia_Actual varchar(4)
select @dFecha_Actual = getdate()
set @anio_Actual = convert(varchar, year(@dFecha_Actual))
set @mes_Actual = RIGHT('0' + convert(varchar, month(@dFecha_Actual)),2)
set @dia_Actual = RIGHT('0' + convert(varchar, day(@dFecha_Actual)),2)
set @sFecha_Actual = @anio_Actual +'-'+ @mes_Actual + '-' + @dia_Actual
declare @urlWs varchar(max)
set @urlWs = 'http://code.staffsystems.us/webservices/tipo-de-cambio/serverside.php?work=get_sunat&anho='
+@anio_Actual+'&mes='+@mes_Actual+'&dia='+@dia_Actual
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get',@urlWs,'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @responseText OUTPUT
declare @cadena2 nvarchar(MAX)
declare @pos_primer_corchete int
set @pos_primer_corchete = CHARINDEX('[', @responseText)
set @cadena2 = substring( @responseText, @pos_primer_corchete + 1, LEN(@responseText) - @pos_primer_corchete - 2 )
set @cadena2 = Replace(@cadena2, '},', '};')
set @cadena2 = Replace(@cadena2, '{', '')
set @cadena2 = Replace(@cadena2, '}', '')
set @cadena2 = Replace(@cadena2, '"', '')
set @cadena2 = Replace(@cadena2, 'fecha:', '')
set @cadena2 = Replace(@cadena2, 'compra:', '')
set @cadena2 = Replace(@cadena2, 'venta:', '')
DECLARE @sFilaFechaActual varchar(MAX)
select @sFilaFechaActual = strData from fnc_Split(@cadena2, ';')
where substring(strData,1,10)= @sFecha_Actual
declare @tipoCambioCompra varchar(10)
declare @tipoCambioVenta varchar(10)
if @sFilaFechaActual is null
begin
set @dFecha_Actual = dateadd(day,-1,getdate()) --'04/09/2014'
set @anio_Actual = convert(varchar, year(@dFecha_Actual))
set @mes_Actual = RIGHT('0' + convert(varchar, month(@dFecha_Actual)),2)
set @dia_Actual = RIGHT('0' + convert(varchar, day(@dFecha_Actual)),2)
set @sFecha_Actual = @anio_Actual +'-'+ @mes_Actual + '-' + @dia_Actual
set @urlWs = 'http://code.staffsystems.us/webservices/tipo-de-cambio/serverside.php?work=get_sunat&anho='+@anio_Actual+
'&mes='+@mes_Actual+'&dia='+@dia_Actual
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get',@urlWs,'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @responseText OUTPUT
set @pos_primer_corchete = CHARINDEX('[', @responseText)
set @cadena2 = substring( @responseText, @pos_primer_corchete + 1, LEN(@responseText) - @pos_primer_corchete - 2 )
set @cadena2 = Replace(@cadena2, '},', '};')
set @cadena2 = Replace(@cadena2, '{', '')
set @cadena2 = Replace(@cadena2, '}', '')
set @cadena2 = Replace(@cadena2, '"', '')
set @cadena2 = Replace(@cadena2, 'fecha:', '')
set @cadena2 = Replace(@cadena2, 'compra:', '')
set @cadena2 = Replace(@cadena2, 'venta:', '')
select @sFilaFechaActual = strData from fnc_Split(@cadena2, ';')
where substring(strData,1,10)= @sFecha_Actual
set @tipoCambioCompra = (select strData as Compra from fnc_Split(@sFilaFechaActual, ',') where Id=2)
set @tipoCambioVenta = (select strData as Venta from fnc_Split(@sFilaFechaActual, ',') where Id=3)
insert into [Contabilidad.TipoCambioContable](TributarioCompra,TributarioVenta,FechaRegistra)
values(@tipoCambioCompra,@tipoCambioVenta,getdate())
end
else
begin
set @tipoCambioCompra = (select strData as Compra from fnc_Split(@sFilaFechaActual, ',') where Id=2)
set @tipoCambioVenta = (select strData as Venta from fnc_Split(@sFilaFechaActual, ',') where Id=3)
insert into [Contabilidad.TipoCambioContable](TributarioCompra,TributarioVenta,FechaRegistra)
values(@tipoCambioCompra,@tipoCambioVenta,getdate())
end
Exec sp_OADestroy @Object
end
no funciona
ResponderEliminarAca un video de la consulta de tipo de cambio
ResponderEliminarhttps://www.youtube.com/watch?v=5Fi-t0-td9M
hola sale un error en fnc_Split
ResponderEliminarhola solucionaste el error
Eliminar