Форум FAQ О команде
Поиск по сайту:
 
Sybase
Sybase ASA  
  Статьи  
  Полезный код  
Sybase ASE  
Sybase IQ  
Sybase PowerDesigner  
Sybase PowerBuilder  

Продукты
Наши продукты  
Продукты партнеров портала  

Сообщества
Alef community  

Меню
Регистрация  
Почта  

Вход

Рассылка
Рассылка 'РСУБД Sybase ASA 9 - мощность, легкость и надежность'
Почтовая рассылка
"Технологии обработки данных компании Sybase"


Статистика
Яндекс цитирования

Rambler's Top100
Находится в каталоге Апорт

Главная -> ПО Sybase -> Sybase ASA -> Полезный код
Получение курса валют с сайта ЦБ РФ.

Получение курса валют с сайта ЦБ РФ.

Создаем веб-процедуру, которая получает курс валют в виде XML через веб-сервис ЦентроБанка:
CREATE PROCEDURE "DBA"."sp_asc_CB_GetCursOnDate_XML"(in date_req char(10))
result(
  Attribute long varchar,
  Value long varchar
)
url 'http://www.cbr.ru/scripts/XML_daily.asp' type 'HTTP:GET';
COMMENT ON PROCEDURE "DBA"."sp_asc_CB_GetCursOnDate_XML"
IS 'Получить курс валют на указанную дату с Центробанка РФ в виде XML';
Обвязываем ее ASA-шной процедурой, которая преобразовывает XML в набор данных:
CREATE PROCEDURE "DBA"."sp_asc_CB_GetCursOnDate" (
  IN @date_req date DEFAULT NULL
)
RESULT (
  ID char(10),
  NumCode char(3),
  CharCode char(3),
  Nominal int,
  Name char(50),
  Value numeric(15, 4)
)
BEGIN
  SELECT l.ID, l.NumCode, l.CharCode, l.Nominal, l.Name, 
         CONVERT(numeric(15, 4), Replace(l.Value, ',', '.')) AS Value
  FROM sp_asc_CB_GetCursOnDate_XML (CONVERT(char(10), IsNull(@date_req, Now()), 103)) w,
    LATERAL (
      dbo.OpenXML(w.Value, '/ValCurs/Valute') 
        WITH (
          ID char(10) '@ID', 
          NumCode char(3) './NumCode', 
          CharCode char(3) './CharCode', 
          Nominal int './Nominal', 
          Name char(50) './Name', 
          Value char(15) './Value'
        )
    ) AS l
  WHERE Attribute = 'Body';
END;
COMMENT ON PROCEDURE "DBA"."sp_asc_CB_GetCursOnDate" 
IS 'Получить курс валют на указанную дату с Центробанка РФ в виде набора данных';
Теперь получаем курс валют на текущую дату:
SELECT *
FROM sp_asc_CB_GetCursOnDate (Now());
... ну а дальше как обычно. Можем использовать в запросах, ставить условия, сделать EVENT, который по расписанию получает курс валют и вставляет в нужную таблицу. Лишь бы сервер интернет видел :)


Дата публикации: Monday 27 March 2006 16:54:39
Материал прочитан: 18125 раз(а)
[ Назад ]



Продвижение сайтов
Биржа ссылок

Copyright©2005 phpMS. Все права защищены.
hosted on pets-tree