Назначение
Плагин db в hid предназначен для удаленной работы с ядром АСР "Гидра". Он позволяет выполнять хранимые процедуры и делать SQL-выборки из БД без установки непосредственного соединения с ней.
Принцип работы
Все хранимые процедуры СУБД отображаются в названия методов напрямую (например, для процедуры SI_USERS_PKG.SI_USERS_PUT используется соответствующий метод плагина SI_USERS_PKG.SI_USERS_PUT). В качестве аргумента методов хранимых процедур следует передавать структуру (хэш, словарь) с параметрами ее вызова. Методы хранимых процедур возвращают структуры переданных параметров, но с измененными во время выполнения значениями (например, если передавать в процедуру SI_USERS_PKG.SI_USERS_PUT в качестве значения num_N_USER_ID NULL, то на "выходе" процедуры в качестве значения num_N_USER_ID будет идентификатор созданного абонента).
Для получения выборок из БД следует использовать специальный метод SELECT(query, page_num), где query — SQL-запрос данных из БД, page_num — номер страницы результата (по умолчанию — 1). Для снижения нагрузки на БД выборки делаются постранично, т.е. весь результат запроса разбивается на страницы определенного размера (размер задается в конфиге hid). Если в качестве page_num передан 0, делается выборка без разбиения на страницы (при условии, что это разрешено в конфиге hid).
Метод SELECT возвращает структуру (хэш, словарь) следущего содержания:
{
'RecordsNumber' => RecordsNumber,
'PagesNumber' => PagesNumber,
'SelectResult' => SelectResult,
}
RecordsNumber— количество записей результата выборки;PagesNumber— количество страниц результата выборки;SelectResult— список (массив) записей. Каждая запись представляется еще одним списком, элементы которого соответствуют выбираемым полям таблицы. Все числовые поля таблиц из БД представляются в виде строк.
Параметры конфига hid
db select page size— размер страницы выборки. По умолчанию — 20.db allow unlimited select— флаг разрешения выборок без ограничения (onилиoff). По умолчанию —off.
Примеры
Получение информации о юридическом лице
SELECT("SELECT * FROM SI_V_COMPANIES_JR WHERE N_COMPANY_ID = <num_N_COMPANY_ID>")
num_N_COMPANY_ID— идентификатор юр. лица
Удаление физического лица
SI_PERSONS_PKG.SI_PERSONS_DEL({
'num_N_PERSON_ID' => num_N_PERSON_ID,
})
num_N_PERSON_ID— идентификатор физ. лица
Добавление/изменение физического лица
SI_PERSONS_PKG.SI_PERSONS_PUT({
'num_N_PERSON_ID' => num_N_PERSON_ID,
'vch_VC_SURNAME' => 'Шварценгольд',
'vch_VC_SECOND_NAME' => 'Викторович',
'ch_C_SEX' => 'M',
'num_N_SUBJ_GROUP_ID' => 49001,
'vch_VC_INN' => '1234567891',
'num_N_DOC_AUTH_TYPE_ID' => 2015,
'vch_VC_DOC_SERIAL' => '01 06',
'vch_VC_DOC_NO' => '489635',
'dt_D_DOC' => DATE('24.01.2009', 'DD.MM.YYYY'),
'vch_VC_DOCUMENT' => 'Отделением по району Царицыно ОУФМС России по г. Москве в ЮАО',
'dt_D_BIRTH' => DATE('20.03.1955', 'DD.MM.YYYY'),
'vch_VC_BIRTH_PLACE' => 'г. Москва',
'num_N_SUBJ_STATE_ID' => 2011,
'num_N_CITIZENSHIP_ID' => 21101,
})
num_N_PERSON_ID— идентификатор физ. лица. Если равенNULL— производится создание, иначе — редактированиеnum_N_SUBJ_GROUP_ID— идентификатор группы физ. лиц (представлениеSI_V_SUBJ_GROUPS)num_N_DOC_AUTH_TYPE_ID— идентификатор типа документа, удостоверяющего личность (справочникREF_TYPE_Document)num_N_SUBJ_STATE_ID— идентификатор состояния СУ (справочникREF_TYPE_Subject_State, SYS_CONTEXT('CONST', 'SUBJ_STATE_On') == 2011)num_N_CITIZENSHIP_ID— идентификатор региона гражданства
Ознакомиться со многими другими примерами работы с БД вы можете в разделе «Примеры работы с БД (Офис оператора связи)». Для использования этих примеров в работе с плагином db агента hid вам достаточно привести код PL/SQL к формату, описанному в примерах выше.