Бумаги

advertisement
Интерфейс к базе итогов торгов.
Оглавление:
Общие положения: ........................................................................................................................3
Общие функции: ............................................................................................................................3
Список рынков ...........................................................................................................................3
Список секторов ........................................................................................................................3
Зарегестрировать пользователя в системе для данного сектора ...........................................3
Поля: ...............................................................................................................................................3
Описание полей .........................................................................................................................3
Список наборов полей...............................................................................................................3
Принадлежность поля к набору ...............................................................................................4
Описание полей данных по сделкам .......................................................................................4
Описание полей в файле DBF ..................................................................................................4
Данные для шапки таблицы .....................................................................................................4
Бумаги: ............................................................................................................................................5
Список бумаг..............................................................................................................................5
Поиск бумаги .............................................................................................................................5
Список инструментов ................................................................................................................6
Список режимов торгов: ...........................................................................................................6
Список заданных оператором наборов бумаг .........................................................................6
Принадлежность бумаги к набору ...........................................................................................6
Управление принадлежностью бумаг к набору бумаг ...........................................................6
Получить наименование бумаги по её идентификатору........................................................6
Получить сектора для бумаги по её идентификатору ...........................................................6
Данные: ...........................................................................................................................................7
Данные за определенный день по группе бумаг: ...................................................................7
Данные по бумаге за период .....................................................................................................7
Данные укрупненные ................................................................................................................7
Последние даты существования данных .................................................................................8
Существование сделок для бумаги по определенному режиму торгов за указанную дату 8
Получить последнюю котировку бумаги ................................................................................8
Навигация .......................................................................................................................................8
Навигация для данных за определенный день по группе бумаг ...........................................9
Навигация для данных по бумаге за период ...........................................................................9
Навигация для данных укрупненных ....................................................................................10
Рассчитать периоды.................................................................................................................10
Навигация (старые функции) .....................................................................................................10
Навигация для данных за определенный день по группе бумаг .........................................11
Навигация для данных по бумаге за период .........................................................................12
Навигация для данных укрупненных ....................................................................................12
Данные в DBF-формате...............................................................................................................12
Сформировать данные по сектору (по бумаге/списку, за дату/период) .............................12
Сформировать данные по сделкам по бумаге, режиму торгов и дате ................................13
Сформировать данные за месяц по сектору ..........................................................................13
Календарь: ....................................................................................................................................13
Года существования данных по бумаге/списку бумаг .........................................................13
Месяца существования данных по бумаге/списку бумаг для указанного года .................13
Дни существования данных по бумаге/списку бумаг для указанных года и месяца ........14
Общие положения:
Весь интерфейс организован на хранимых процедурах.
Все данные разделены по рынкам, рынки разделены на сектора.
Данные представляются в виде таблиц с несколькими предзаданными наборами
полей.
Общие функции:
Список рынков
CREATE FUNCTION get_markets(
market VARCHAR(32) -- если NULL- возвращает все рынки
) RETURNING
VARCHAR(32), -- идентификатор
VARCHAR(128) -- наименование
WITH RESUME
Список секторов
CREATE FUNCTION get_sectors(
market VARCHAR(32), -- идентификатор рынка
sector VARCHAR(32) -- если NULL- возвращает все сектора
) RETURNING
VARCHAR(32), -- идентификатор сектора
VARCHAR(128) -- наименование сектора
WITH RESUME
Зарегестрировать пользователя в системе для данного сектора
Необходимо для сбора статистики посещений пользователей
CREATE FUNCTION register_user(
id_user VARCHAR(20), -- идентификатор пользователя (кука)
sector VARCHAR(32) -- идентификатор сектора
) RETURNING
SMALLINT -- 1 если было добавление пользователя, 0 – если нет.
Поля:
Описание полей
CREATE FUNCTION get_fields(
sector VARCHAR(32), -- идентификатор сектора
is_group INT -- =1 при укрупнении
) RETURNING
VARCHAR(32), -- идентификатор поля
NVARCHAR(64), -- краткое наименование поля (как в шапке таблицы)
NVARCHAR(64), -- краткое наименование группы полей (как в шапке таблицы)
NVARCHAR(128) -- полное наименование поля
WITH RESUME
Список наборов полей
CREATE FUNCTION get_fields_lists(
sector VARCHAR(32) -- идентификатор сектора
) RETURNING
VARCHAR(32), -- идентификатор набора
VARCHAR(64) -- наименование набора
WITH RESUME
Принадлежность поля к набору
CREATE FUNCTION is_field_in_list(
sector VARCHAR(32), -- идентификатор сектора
field VARCHAR(32), -- идентификатор поля
field_list VARCHAR(20) -- идентификатор набора
) RETURNING
SMALLINT -- =1 если принадлежит, =0 иначе
Описание полей данных по сделкам
CREATE FUNCTION get_rees_fields(
sector VARCHAR(32) -- идентификатор сектора
) RETURNING
VARCHAR(10), -- идентификатор поля
NVARCHAR(64) -- описание поля
WITH RESUME
Описание полей в файле DBF
CREATE FUNCTION get_dbf_fields(
sector VARCHAR(32) -- идентификатор сектора
) RETURNING
VARCHAR(10), -- идентификатор поля
NVARCHAR(128) -- описание поля
WITH RESUME
Данные для шапки таблицы
Предпоследний возвращаемый столбец содержит пары 10-11, 20-21 и т.д. Первое
значение в паре указывает на индикативное поле (то, по которому определяется
знак измененния), второе указывает поле, которое изменялось (для отрисовки
стрелки изменения)
CREATE FUNCTION fields_title(
sector VARCHAR(32), -- идентификатор сектора
field_list VARCHAR(20), -- идентификатор набора
is_group INT -- =1 для шапки при укрупнении
) RETURNING
VARCHAR(64), -- наименование поля
VARCHAR(64), -- наименование группы полей
INT, -- индикатор раскраски колонок
INT -- =1 для колонки со сделками, =2 для текстовых данных (спец. вывод) =3 для
поля даты, =4 нужна ссылка на описание бумаги
WITH RESUME
Пример вызова:
EXECUTE FUNCTION fields_title('securies', 'full', 0)
Ответ:
Краткое наименование ценной бумаги
Режим торгов
Дата торгов
Средневзвешенная
4
2
3
Цена сделки
11
Изменение средневзвешенной
Рыночная
Открытия
Периода открытия
Последней
Изменение цены последней
Периода закрытия
Минимальная
Максимальная
Последней предыдущего дня
Цена предложения
Наименьшая
Цена спроса
Наибольшая
Сумма сделок за день, руб
Объем сделок за день в единицах
Количество сделок за день, штук
Цена сделки
Цена сделки
Цена сделки
Цена сделки
Цена сделки
Цена сделки
Цена сделки
Цена сделки
Цена сделки
Цена сделки
Цена предложения
Цена предложения
Цена спроса
Цена спроса
10
21
20
1
Бумаги:
Есть заданные оператором наборы бумаг и набор бумаг, заданный пользователем.
У пользовательского набора идентификатор=кука (уникальная; 20 символов).
Список бумаг
CREATE FUNCTION get_secs(
sector VARCHAR(32), -- идентификатор сектора
instr VARCHAR(4), -- идентификатор инструмента, если =NULL то для всех
инструментов
id_list VARCHAR(20), -- идентификатор набора, если =NULL то для всех наборов
p_active SMALLINT -- если =1 то ищется только среди бумаг с признаком
«Торгуется на ММВБ»
) RETURNING
VARCHAR(12), -- идентификатор бумаги
VARCHAR(64), -- наименование бумаги
VARCHAR(4), -- идентификатор инструмента
VARCHAR(128) -- наименование инструмента
WITH RESUME
Поиск бумаги
Все строки поиска должны содержать концевой знак процента
CREATE FUNCTION find_secs(
sector VARCHAR(32), -- идентификатор сектора
sec VARCHAR(12), -- строка поиска по идентификатору
name NVARCHAR(128), -- строка поиска по наименованию
p_active SMALLINT -- если =1 то ищется только среди бумаг с признаком
«Торгуется на ММВБ»
) RETURNING
VARCHAR(12), -- идентификатор бумаги
VARCHAR(64), -- наименование бумаги
VARCHAR(4), -- идентификатор инструмента
VARCHAR(128) -- наименование инструмента
Список инструментов
Лучше не использовать, добавлена для совместимости с черновиком
CREATE FUNCTION get_instrs(
sector VARCHAR(32) -- идентификатор сектора
) RETURNING
VARCHAR(4), -- идентификатор инструмента
VARCHAR(64) -- наименование инструмента
Список режимов торгов:
CREATE FUNCTION get_boards(
sector VARCHAR(32) -- идентификатор сектора
) RETURNING
VARCHAR(32), -- идентификатор режима торгов
VARCHAR(128) -- наименование режима торгов
WITH RESUME
Список заданных оператором наборов бумаг
CREATE FUNCTION get_secs_lists(
sector VARCHAR(32) -- идентификатор сектора
) RETURNING
VARCHAR(32), -- идентификатор набора
VARCHAR(64) -- наименование набора
WITH RESUME
Принадлежность бумаги к набору
CREATE FUNCTION sec_in_list(
sector VARCHAR(32), -- идентификатор сектора
sec VARCHAR(12), -- идентификатор бумаги
id_list VARCHAR(20) -- идентификатор набора (кука)
) RETURNING
SMALLINT -- 1 если принадлежит
Управление принадлежностью бумаг к набору бумаг
CREATE FUNCTION sec_to_list(
sector VARCHAR(32), -- идентификатор сектора
sec VARCHAR(12), -- идентификатор бумаги
id_list VARCHAR(20), -- идентификатор набора
is_set SMALLINT -- если 1 - то вставить бумагу в набор,
если 0 - то удалить бумагу из набора
) RETURNING
SMALLINT -- возвращает 0, если нужна вставка, а в наборе больше 10 бумаг –
ограничение на кол-во бумаг в наборе. В любом другом случае возвращет 1.
Получить наименование бумаги по её идентификатору
CREATE FUNCTION get_sec_name(
sector VARCHAR(32), -- идентификатор сектора
sec VARCHAR(12) -- идентификатор бумаги
) RETURNING NVARCHAR(128) – наименование бумаги
Получить сектора для бумаги по её идентификатору
CREATE FUNCTION get_sector_by_sec(
p_sec VARCHAR(12) -- идентификатор бумаги
) RETURNING VARCHAR(32), NVARCHAR(128)
Данные:
Многие процедуры в имени содержат
идентификатор сектора – макрос подстановки %%SECTOR%%
идентификатор набора полей – макрос подстановки %%FIELDS_LIST_NAME%%
список возвращаемых полей (в зав-ти от набора полей) - макрос подстановки
%%FIELDS_LIST_RETURN%%
Например, get_data_day_%%SECTOR%%_%%FIELDS_LIST_NAME%% для рынка
securies раскрывается в get_data_day_securies_full, get_data_day_securies_middle и
get_data_day_securies_short
Данные за определенный день по группе бумаг:
CREATE FUNCTION get_data_day_%%SECTOR%%_%%FIELDS_LIST_NAME%%(
begin_pos INT, -- начальная позиция
sec_list VARCHAR(20), -- идентификатор набора бумаг
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
date_show DATE, -- дата торгов
only_active INT -- если 1 то возвращаются только
дни с активностью на рынке (numtrades>0)
) RETURNING
INT, -- позиция строки данных
VARCHAR(12), -- идентификатор бумаги
VARCHAR(4), -- идентификатор режима торгов
CHAR(10), -- дата торгов в строковом формате %Y-%m-%d
%%FIELDS_LIST_RETURN%% -- собственно данные
WITH RESUME
Данные по бумаге за период
CREATE FUNCTION get_data_%%SECTOR%%_%%FIELDS_LIST_NAME%%(
begin_pos INT, -- начальная позиция
securie VARCHAR(12), -- идентификатор бумаги
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
date_from DATE, -- дата начала периода
date_to DATE, -- дата конца периода
only_active INT-- если 1 то возвращаются только
дни с активностью на рынке (numtrades>0)
) RETURNING
INT, -- позиция строки данных
VARCHAR(12), -- идентификатор бумаги
VARCHAR(4), -- идентификатор режима торгов
CHAR(10), -- дата торгов в строковом формате %Y-%m-%d
%%FIELDS_LIST_RETURN%% -- собственно данные
WITH RESUME
Данные укрупненные
CREATE FUNCTION
get_data_group_%%SECTOR%%_%%FIELDS_LIST_NAME%%(
begin_pos INT, -- начальная позиция
securie VARCHAR(12), -- идентификатор бумаги
если NULL то учитывается значение sec_list
sec_list VARCHAR(20), -- идентификатор набора бумаг
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
year_show INT, -- год: от 1990 до ...
если 0, то все года и не учитываются quart_show и month_show
quart_show INT, -- квартал: от 1 до 4 (значение month_show не учитывается)
если 0 - то в зав-ти от значения month_show
month_show INT -- месяц: от 1 до 12
если 0 - то все месяца
) RETURNING
INT, -- позиция строки данных
VARCHAR(12), -- идентификатор бумаги
VARCHAR(4), -- идентификатор режима торгов
CHAR(10), -- всегда NULL (дата торгов в строковом формате)
%%FIELDS_LIST_RETURN%% -- собственно данные
WITH RESUME
Последние даты существования данных
Должен быть указан или набор, или бумага
CREATE FUNCTION last_dates_%%SECTOR%%(
sec_list VARCHAR(20), -- идентификатор набора бумаг
securie VARCHAR(12), -- идентификатор бумаги
board VARCHAR(4) -- идентификатор режима торгов (если NULL то все)
) RETURNING
INT, -- день \
INT, -- месяц – последняя дата существования для набора бумаг, начало последнего
периода для бумаги
INT, -- год /
INT, -- день \
INT, -- месяц – NULL для набора бумаг, конец последнего периода для бумаги
INT -- год
/
Существование сделок для бумаги по определенному режиму торгов за указанную дату
Если указана только дата (первые 2 параметра =NULL) то выдается существование
сделок за день
CREATE FUNCTION trades_exist_%%SECTOR%%(
p_id VARCHAR(12), -- идентификатор бумаги
p_board VARCHAR(4), -- идентификатор режима торгов
p_trdate DATE -- дата торгов
) RETURNING
SMALLINT – 1 – существуют, 0 - нет
Получить последнюю котировку бумаги
CREATE FUNCTION get_last_quote_%%SECTOR%%(
securie VARCHAR(12) -- идентификатор бумаги
) RETURNING DATE, FLOAT, FLOAT
DATE -- дата торгов
FLOAT – котировка (последняя цена)
FLOAT – изменение котировки
Навигация
Функции возвращают начальные позиции страниц и их названия. Вызовы функций
практически идентичны соответствующим функциям формирования данных. Для
первых вызовов устанавливать begin_pos=0. Для группы страниц можно
кэшировать вызовы _sets2_ функций, т.к. они идентичны.
Пример использования:
Вызов:
EXECUTE FUNCTION get_data_sets2_securies( 0, 'RU0008958863', NULL,
DATETIME(2000-01-28) YEAR TO DAY, DATETIME(2002-02-04) YEAR TO DAY, 0)
Result set:
1
2
3
4
5
6
365520071
365660071
365800071
365970071
366110071
366250071
28.01.2000
11.02.2000
25.02.2000
13.03.2000
27.03.2000
10.04.2000
С
С
С
С
С
N
Отобразить нужно в:
28.01.2000 11.02.2000 25.02.2000 13.03.2000 27.03.2000
365520071 365660071 365800071 365970071 366110071
>>>
6
Ссылка >>> приведет к формированию сл. сета:
Вызов:
EXECUTE FUNCTION get_data_sets2_securies( 6, 'RU0008958863', NULL,
DATETIME(2000-01-28) YEAR TO DAY, DATETIME(2002-02- 04) YEAR TO DAY, 0)
Result set:
1
6
7
8
9
10
11
365520071
366250071
366390071
366560071
366700071
366840071
366990071
28.01.2000
10.04.2000
24.04.2000
11.05.2000
25.05.2000
08.06.2000
23.06.2000
P
C
C
C
C
C
N
Отобразить нужно в:
<<< 10.04.2000 24.04.2000 11.05.2000 25.05.2000 08.06.2000
>>>
1 366250071 366390071 366560071 366700071 366840071
11
Пять ссылок с датами приводят к одинаковому вызову get_data_sets_securies.
Навигация для данных за определенный день по группе бумаг
CREATE FUNCTION get_data_day_sets2_%%SECTOR%%(
begin_pos INT, -- номер начального окна для сета
sec_list VARCHAR(20), -- идентификатор набора бумаг
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
date_show DATE, -- дата торгов
only_active INT -- если 1 то возвращаются только
дни с активностью на рынке (numtrades>0)
) RETURNING
INT, -- номер окна
INT, -- первая позиция строки данных страницы (для передачи в get_data_day в
качестве begin_pos)
VARCHAR(32), -- данные для вывода пользователю
CHAR(1) -- признак навигации: P – начало предыдущего сета; C – окна в текущем
сете; N – начало сл. сета.
Навигация для данных по бумаге за период
CREATE FUNCTION get_data_sets2_%%SECTOR%%(
begin_pos INT, -- начальная позиция
securie VARCHAR(12), -- идентификатор бумаги
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
date_from DATE, -- дата начала периода
date_to DATE, -- дата конца периода
only_active INT-- если 1 то возвращаются только
дни с активностью на рынке (numtrades>0)
) RETURNING
INT, -- номер окна
INT, -- первая позиция строки данных страницы (для передачи в get_data в качестве
begin_pos)
VARCHAR(32), -- данные для вывода пользователю
CHAR(1) -- признак навигации: P – начало предыдущего сета; C – окна в текущем
сете; N – начало сл. сета.
Навигация для данных укрупненных
CREATE FUNCTION get_data_group_sets2_%%SECTOR%%(
begin_pos INT, -- начальная позиция
securie VARCHAR(12), -- идентификатор бумаги
если NULL то учитывается значение sec_list
sec_list VARCHAR(20), -- идентификатор набора бумаг
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
year_show INT, -- год: от 1990 до ...
если 0, то все года и не учитываются quart_show и month_show
quart_show INT, -- квартал: от 1 до 4 (значение month_show не учитывается)
если 0 - то в зав-ти от значения month_show
month_show INT -- месяц: от 1 до 12
если 0 - то все месяца
) RETURNING
INT, -- номер окна
INT, -- первая позиция строки данных страницы (для передачи в get_data_group в
качестве begin_pos)
VARCHAR(32), -- данные для вывода пользователю
CHAR(1) -- признак навигации: P – начало предыдущего сета; C – окна в текущем
сете; N – начало сл. сета.
Рассчитать периоды
Используется для ссылок из таблицы с укрупненными данными
CREATE FUNCTION calc_dates_num(
year_show INT, -- год
quart_show INT, -- квартал
month_show INT -- месяц
) RETURNING
INT, -- день начала периода
INT, -- месяц начала периода
INT, -- год начала периода
INT, -- день конца периода
INT, -- месяц конца периода
INT -- год конца периода
Навигация (старые функции)
Функции возвращают начальные позиции страниц и их названия. Вызовы функций
практически иденитчны соответствующим функциям формирования данных.
Признак окончания навигации =0 для обыкновенных страниц и =1 для перехода на
следующую группу страниц. Необходимо вести историю переходов по группам
страниц, так как при возврате на предыдущие группы нужно указывать begin_pos.
Для первых вызовов устанавливать begin_pos=0. Для группы страниц можно
кэшировать вызовы _sets_ функций, т.к. они идентичны.
Пример использования:
Вызов:
EXECUTE FUNCTION get_data_sets_securies( 0, 'RU0008958863', NULL, DATETIME(200001-28) YEAR TO DAY, DATETIME(2002-02-04) YEAR TO DAY, 0)
Result set:
1
21
41
61
81
101
365520071
365660071
365800071
365970071
366110071
366250071
28.01.2000
11.02.2000
25.02.2000
13.03.2000
27.03.2000
10.04.2000
0
0
0
0
0
1
Отобразить нужно в:
28.01.2000 11.02.2000 25.02.2000 13.03.2000 27.03.2000
>>>
365520071 365660071 365800071 365970071 366110071 366250071
Ссылка >>> приведет к формированию сл. сета:
Вызов:
EXECUTE FUNCTION get_data_sets_securies( 366250071, 'RU0008958863', NULL,
DATETIME(2000-01-28) YEAR TO DAY, DATETIME(2002-02- 04) YEAR TO DAY, 0)
Result set:
1
21
41
61
81
101
366250071
366390071
366560071
366700071
366840071
366990071
10.04.2000
24.04.2000
11.05.2000
25.05.2000
08.06.2000
23.06.2000
0
0
0
0
0
1
Отобразить нужно в:
<<< 10.04.2000 24.04.2000 11.05.2000 25.05.2000 08.06.2000
>>>
365520071 366250071 366390071 366560071 366700071 366840071 366990071
Зеленым выделена начальная позиция для предыдущего сета. При переходе >>>
нужно запоминать все начальные позиции для предыдущих сетов. Пять ссылок с
датами приводят к одинаковому вызову get_data_sets_securies.
Навигация для данных за определенный день по группе бумаг
CREATE FUNCTION get_data_day_sets_%%SECTOR%%(
begin_pos INT, -- начальная позиция
prew_windows INT, -- кол-во предыдущих окон (для правильного формирования
номеров страниц)
sec_list VARCHAR(20), -- идентификатор набора бумаг
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
date_show DATE, -- дата торгов
only_active INT -- если 1 то возвращаются только
дни с активностью на рынке (numtrades>0)
) RETURNING
INT, -- не используется
INT, -- первая позиция строки данных страницы (для передачи в get_data_day в
качестве begin_pos)
VARCHAR(32), -- строка отображения страницы
INT -- признак окончания навигации (=1)
Навигация для данных по бумаге за период
CREATE FUNCTION get_data_sets_%%SECTOR%%(
begin_pos INT, -- начальная позиция
securie VARCHAR(12), -- идентификатор бумаги
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
date_from DATE, -- дата начала периода
date_to DATE, -- дата конца периода
only_active INT-- если 1 то возвращаются только
дни с активностью на рынке (numtrades>0)
) RETURNING
INT, -- не используется
INT, -- первая позиция строки данных страницы (для передачи в get_data в качестве
begin_pos)
VARCHAR(32), -- строка отображения страницы
INT -- признак окончания навигации (=1)
Навигация для данных укрупненных
CREATE FUNCTION get_data_group_sets_%%SECTOR%%(
begin_pos INT, -- начальная позиция
prew_windows INT, -- кол-во предыдущих окон (для правильного формирования
номеров страниц)
securie VARCHAR(12), -- идентификатор бумаги
если NULL то учитывается значение sec_list
sec_list VARCHAR(20), -- идентификатор набора бумаг
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
year_show INT, -- год: от 1990 до ...
если 0, то все года и не учитываются quart_show и month_show
quart_show INT, -- квартал: от 1 до 4 (значение month_show не учитывается)
если 0 - то в зав-ти от значения month_show
month_show INT -- месяц: от 1 до 12
если 0 - то все месяца
) RETURNING
INT, -- не используется
INT, -- первая позиция строки данных страницы (для передачи в get_data_group в
качестве begin_pos)
VARCHAR(32), -- строка отображения страницы
INT -- признак окончания навигации (=1)
Данные в DBF-формате
Сформировать данные по сектору (по бумаге/списку, за дату/период)
Должна быть указана или бумага, или список; хотя бы одна дата.
CREATE FUNCTION get_dbf (
sector VARCHAR(32), -- сектор
sec VARCHAR(12), -- идентификатор бумаги
sec_list VARCHAR(20), -- идентификатор набора бумаг
board VARCHAR(4), -- идентификатор режима торгов (если NULL то все)
date_from DATE, -- дата начала периода
date_to DATE, -- дата конца периода
only_active SMALLINT, -- если 1 то возвращаются только
дни с активностью на рынке (numtrades>0)
file_name VARCHAR(255) -- если NULL то функция сама формирует имя файла
) RETURNING
VARCHAR(255) -- или разделенные плюсом «+» имя файла без расширения
и BLOB-идентификатор, если данные успешно сформированы;
или строка, содержащая «NO DATA», если данных за период /
дату нет;
или NULL, если выборка оказалась слишком большой (больше
заданной в настройках оператором)
Сформировать данные по сделкам по бумаге, режиму торгов и дате
CREATE FUNCTION get_rees_dbf (
sector VARCHAR(32), -- идентификатор сектора
sec VARCHAR(12), -- идентификатор бумаги
board VARCHAR(4), -- идентификатор режима торгов
date_show DATE -- дата торгов
) RETURNING
VARCHAR(255) -- или разделенные пробелом имя файла без расширения
и BLOB-идентификатор, если данные успешно сформированы;
или строка, содержащая «NO DATA», если данных за период /
дату нет;
или NULL, если выборка оказалась слишком большой (больше
заданной в настройках оператором)
Сформировать данные за месяц по сектору
CREATE FUNCTION get_mobth_dbf (
sector VARCHAR(32), -- сектор
month SMALLINT – месяц, îò 1 äî 12
year SMALLINT – год, от 1990 до …
) RETURNING
VARCHAR(255) -- или разделенные пробелом имя файла без расширения
и BLOB-идентификатор, если данные успешно сформированы;
или строка, содержащая «NO DATA», если данных за период /
дату нет;
или NULL, если выборка оказалась слишком большой (больше
заданной в настройках оператором)
Календарь:
Года существования данных по бумаге/списку бумаг
CREATE FUNCTION exist_years_%%SECTOR%% (
sec_list VARCHAR(20), -- ид-р списка бумаг, если NULL, то берется ид-р бумаги
securie VARCHAR(12), -- ид-р бумаги (не рассматривается, если sec_list не NULL)
board VARCHAR(4) -- ид-р режима торгов (если NULL, то по всем)
) RETURNING
INT, -- первый год
INT -- последний год
Месяца существования данных по бумаге/списку бумаг для указанного года
CREATE FUNCTION exist_months_%%SECTOR%%(
sec_list VARCHAR(20), -- ид-р списка бумаг, если NULL, то берется ид-р бумаги
securie VARCHAR(12), -- ид-р бумаги (не рассматривается, если sec_list не NULL)
board VARCHAR(4), -- ид-р режима торгов (если NULL, то по всем)
year_for INT -- год
) RETURNING
INT, -- первый месяц
INT -- последний месяц
Дни существования данных по бумаге/списку бумаг для указанных года и месяца
CREATE FUNCTION exist_days_%%SECTOR%%(
sec_list VARCHAR(20), -- ид-р списка бумаг, если NULL, то берется ид-р бумаги
securie VARCHAR(12), -- ид-р бумаги (не рассматривается, если sec_list не NULL)
board VARCHAR(4), -- ид-р режима торгов (если NULL, то по всем)
year_for INT, -- год
month_for INT -- месяц
) RETURNING
INT, -- день месяца
INT, -- номер дня недели (0 – воскресенье, 1 – понедельник и т.д.)
DATE -- дата, если не NULL, то за данный день торги были
WITH RESUME
Пример вызова:
execute function exist_days_securies('EQIN', NULL, NULL, 2001, 11)
Ответ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
…
4
5
6
0
1
2
3
4
5
6
0
1
2
3
…
01-11-2001
02-11-2001
05-11-2001
06-11-2001
08-11-2001
09-11-2001
12-11-2001
13-11-2001
…
Скачать