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