Сен 29

SQL рецепты: курс валют ЦБ РФ

Была однажды необходимость загружать курс валют прямо в базу данных. Нужен был самый простой вариант. Вот мы его и написали.


DECLARE @hDoc INT
declare @xml xml
Declare @Object as Int;
Declare @ResponseText as Varbinary(8000);
Declare @Url as Varchar(MAX);
declare @usd float;
declare @today datetime;
select @Url = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req='+convert(varchar(100), getdate(),103)
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @Url, 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responsebody', @ResponseText OUTPUT
Exec sp_OADestroy @Object
select @xml = cast (@ResponseText as xml)
EXEC sp_xml_preparedocument @hDoc OUTPUT,@xml
SELECT
@usd = cast(replace(value, ',','.') as float)
FROM
OPENXML(@hDoc, '//Value')
WITH
(
id nvarchar(100) '../@ID',
name nvarchar(100) '../Name',
value nvarchar(100) '../Value'
)
where id = 'R01235'
EXEC sp_xml_removedocument @hDoc

Таким образом в переменной @usd мы получаем сегодняшний курс доллара. R01235 — идентификатор USD. Документация API

Подробнее