SQL: процедуры и функции

Использование процедуры. Процедура не может быть вызвана DML (Data Manipulation Language) командой SELECT, для ее выполнения необходима конструкция DECLARE ... BEGIN ... END;.

Важно!

Использование процедуры позволяет возвращать выходные параметры в различные поля обрабатываемого кубом объекта.

Чтобы куб SQL правильно воспринял такую конструкцию (по умолчанию выполняются только DML команды), необходимо установить параметр 'Анонимный блок' в значение 'Да'.

Чтобы сохранить выходные параметры процедуры, необходимо записать их через запятую в поле "Описание параметров" в порядке записи их присваивания в блоке.

Синтаксис поля "Описание параметров":

in/out 'platform type' 'field name'

platform type - тип данных, определенный платформой (string, number, boolean, blob) field name - имя поля в обрабатываемом кубом объекте, в которое будет записан выходной параметр

Пример: out number outParam1, out string outParam2,out boolean outParam3, in blob inParam

Важно!

Описывать параметры следует в порядке их вхождения в SQL-блок куба.

Синтаксис применения описанных параметров: Следует заменить параметр на '?' (знак вопроса). Пример: ? := error_code;

DECLARE
error_message VARCHAR2(1000);
error_message_code VARCHAR2(100);
log_id NUMBER;
BEGIN
APPS.XXPER_MTS_HR_5394_PKG.Run(
'TRANSFER',
'{{id}}',
'{{person_id}}',
'{{person_id.assignment_id}}',
'{{vacancy_id.directual_position_id.organization_id}}',
'{{vacancy_id.directual_position_id.position_id}}',
...
to_date('{{order_date_string}}','DD.MM.YYYY'),
to_date('{{order_date_string}}','DD.MM.YYYY'),
'{{vacancy_id.directual_position_id.branch_id.contract_city}}',
'не разъездной',
log_id,
error_message,
error_message_code
);
? := log_id;
? := error_message_code;
? := error_message;
END;

Описание параметров:

out number logId, out string errorMessageCode, out string errorMessage

Использование функции

В отличие от процедуры, функция может быть вызвана DML командой SELECT, а результат выполнения функции сохраняется в поле обрабатываемого кубом объекта без дополнительного описания параметров.

В указанное поле объекта будут возвращены ВСЕ выходные параметры функции (результатом станет склеенная из выходных параметров строка)

BLOB

Если процедуре/функции передать в качестве входного параметра ссылку на файл, сохраненный в структуре fileUpload, и указать в поле 'Описание параметров' тип blob, то куб автоматически конвертирует файл в BLOB и передает его в таком виде.