Table of Contents |
---|
Общая информация
Основной прикладной программный интерфейс
ais_name |
---|
tnsnames.ora
для подключения к БД....
В документации типы данных аргументов процедур и функций указаны неявно, как ссылки на типы полей таблиц. При работе с API вам следует задавать типы данных аргументов явным образом: NUMBER, DATE и т.д. Для определения типа аргумента удобно использовать стандартные префиксы наименований: num, vch –- таблица соответствия типа данных и используемого префикса приведена в разделе Работа с хранимыми процедурами данной статьи.
Работа с представлениями
С точки зрения клиентского приложения, работа с представлением аналогична работе с обычной RDBMS-таблицей с помощью языка SQL. В АСР «Гидра» из представлений можно делать только выборки (SELECT-запросы), а DDL-операции (запросы INSERT, UPDATE) не разрешаются.
...
Наименование | Пример обозначения | Примечание |
---|---|---|
Код (краткое наименовение) |
| Краткое наименование сущности, как правило, уникально идентифицирующее её. Используется практически во всех сущностях системы. |
Имя (полное наименовение) |
| Полное наименование сущности. Используется практически во всех сущностях системы. |
Тип сущности |
| Если наименование поля содержит |
Номер |
| Порядковый номер чего-либо (например, номер строки в документе). Как правило, используется для сортировки при выводе. |
Примечание (комментарий) |
| Используется в большинстве сущностей системы для хранения дополнительной текстовой информации |
Дата начала |
| Используется для хранения даты начала некоторого периода времени. Может быть как со временем суток, так и без него |
Дата окончания |
| Используется для хранения даты окончания некоторого периода времени. Может быть как со временем суток, так и без него |
Дата операции |
| Как правило, обозначает дату совершения финансовой операции. Может быть как со временем суток, так и без него |
Идентификатор строки |
| Используется для идентификации строки состава документа или вообще строки в некоторой таблице |
Идентификатор родительской строки |
| Используется для ссылки на родительскую строку документа в двухуровневых документах |
Сумма |
| Сумма (как правило, сумма денежных средств с учётом налогов) |
Сумма налогов |
|
|
Сумма без налогов |
|
|
Количество |
| Как правило, количество товара или объем услуги. Обычно присутствует вместе с указанием единицы измерения ( |
Значение |
| Используется для хранения некоторого значения, имеющего заранее неизвестный характер (например, доп. параметр) |
Работа с хранимыми процедурами
Общая информация
Хранимые процедуры объединены в пакеты. Пакеты бывают двух типов — обычные (привилегированные) и сервисные (вспомогательные). Обычные пакеты используются для добавления, модификации и редактирования данных в БД, поэтому для пользования ими требуются, как правило, расширенные права доступа. Сервисные пакеты содержат вспомогательные процедуры, связанные с извлечением и/или преобразованием информации из БД.
...
Язык PL/SQL позволяет вызывать процедуры с именованными аргументами (см. примеры ниже). Этим можно и нужно пользоваться. Разработчики
ais_name |
---|
Процедуры создания/редактирования записи в БД
Процедуры с наименованием вида _PUT
находятся в привилегированных пакетах. Как правило, они предназначены сразу и для создания, и для редактирования записи. У таких процедур первый аргумент — идентификатор создаваемой/редактируемой записи с типом вызова IN OUT
, поэтому числовую константу передавать в него нельзя. Если при вызове такой процедуры в первый аргумент передать значение NULL
, то создастся новая запись, а в этот аргумент запишется значение идентификатора вновь созданной записи. Если же в процедуру _PUT
передать идентификатор существующей записи, то она будет модифицирована. Для модификации существующей записи нужно передавать как параметры с новыми значениями модифицируемой сущности, так и все остальные параметры процедуры с текущими значениями параметров модифицируемой сущности.
...
Code Block | ||||
---|---|---|---|---|
| ||||
DECLARE num_N_PERSON_ID_Edit NUMBER := 123455601; -- необходимо указать идентификатор существующего физлица, иначе при вызове будет ошибка. BEGIN SI_PERSONS_PKG.SI_PERSONS_PUT ( num_N_PERSON_ID => num_N_PERSON_ID_Edit, ...); END; |
Транзакции, исключения и сообщения
После вызова хранимой процедуры (либо группы процедур), которая изменяет данные в БД, необходимо зафиксировать (commit) либо откатить (rollback) транзакцию. Ответственность за это лежит на вызывающем приложении.
...
Code Block | ||||
---|---|---|---|---|
| ||||
DELETE FROM TT_MESSAGE_LOGS; |
Константы
При использовании представлений и хранимых процедур часто необходимо использовать предопределенные константы. Обычно они применяются для указания типа и состояния документов, СУ или ОУ, указания единицы измерения, ставки налога и т.д. Константа состоит из кода и значения (почти всегда значение числовое).
...
и сохранить полученные значения, например, в ассоциативном массиве, где ключом будет являться поле VC_NAME
, а значением — поле VC_VALUE
.
Справочники
Чтобы получить, например, название типа документа в текстовом представлении по его числовому идентификатору, удобно использовать процедуры из пакета SI_REF_PKG_S
. Пример:
Code Block | ||||
---|---|---|---|---|
| ||||
SQL> -- Подcчитать, сколько сейчас актуальных документов в разрезе типа документа SQL> SELECT N_DOC_TYPE_ID, 2 SI_REF_PKG_S.GET_NAME_BY_ID(N_DOC_TYPE_ID) VC_DOC_TYPE, 3 COUNT(*) N_COUNT 4 FROM SD_V_DOCUMENTS 5 WHERE N_DOC_STATE_ID = TO_NUMBER(SYS_CONTEXT('CONST', 'DOC_STATE_Actual')) 6 GROUP BY N_DOC_TYPE_ID 7 ORDER BY N_COUNT DESC; N_DOC_TYPE_ID VC_DOC_TYPE N_COUNT ------------- -------------------------------------------------- 5002 Платёжное поручение 69950 4002 Кассовый ордер 9328 1002 Договор на оказание услуг 2817 3002 Инвойс 1177 6002 Счёт 515 7002 Приказ по ценам 171 11002 Банковская выписка 74 9002 Базовый договор 25 13002 Доп. соглашение 15 20002 Заявка 6 12002 Приказ по временным интервалам 3 8002 Отказ в обслуживании 1 12 rows selected |
Получение диапазона значений справочника
Для получения всего диапазона значений заданного справочника можно воспользоваться следующим SQL-запросом:
...
<vch_VC_REF_NAME>
— код справочника (например, REF_TYPE_Address_Type).
Получение значения справочной записи
Для получения значения конкретной справочной записи можно воспользоваться следующим SQL-запросом:
...
<vch_VC_REF_CODE> — код справочной записи (например, ADDR_TYPE_Subnet).
Начало работы
Для корректной работы в
ais_name |
---|
MAIN.INIT
. Пример:...