Flex SQL — это метод приложения для создания триггеров базы данных (после вставки или после обновления) для проверки, вставки или обновления всех объектов базы данных HxGN EAM. Flex SQL используется вручную путем определения инструкций SQL*Plus или PL/SQL. Основная функция этих операторов — создание и обновление параметров счета для транзакций интерфейса, проверка транзакций на соответствие бизнес-процессам и настройка HxGN EAM в соответствии с потребностями вашей организации.
В частности, создание и обновление параметров счета требуется для любой транзакции, исходящей из HxGN EAM, которая будет связана с внешним (сторонним) приложением. Ознакомьтесь со следующими разделами.
Для записи Flex SQL нужно использовать синтаксис SQL*Plus или PL/SQL. SQL*Plus — это инструмент Oracle, используемый, чтобы подавать команды программирования на уровне базы данных. В его основе лежит язык SQL. SQL позволяет вставлять, изменять, запрашивать и удалять записи базы данных, используя простой синтаксис этого языка. Инструкции SQL начинаются с командного слова, за которым следует определение того, какую информацию нужно выбрать в рамках данной команды, а затем — объект, из которого нужно выбрать информацию. Обычно запрос заканчивается точкой с запятой (;). Для использования Flex SQL всегда нужно опускать конечный символ в виде точки с запятой. Синтаксис динамически компилируется и выполняется, поэтому конечный символ не требуется.
Пример синтаксиса приводится далее.
insert into r5accountdetail
acd_code, acd_rentity, acd_segment1, acd_segment2)
select rql_acd, 'REQL', '01', rql_expensetype
from r5requislines
where rowid = :rowid
Flex SQL также использует второй тип языка, который называют PL/SQL. PL/SQL используется для обработки команд блоками, а не по отдельным инструкциям SQL. Блоки представляют собой группы связанных инструкций SQL, который можно вкладывать в более крупные блоки, что позволяет упорядочить синтаксис SQL для выполнения одновременно нескольких команд.
Пример синтаксиса PL/SQL приводится далее.
DECLARE
cpar r5parts.par_code%type;
cref r5catalogue.cat_ref%type;
csupp r5companies.com_code%type;
cursor rql is
select rql_ref, rql_part, rql_supplier, rql_rstatus
from r5requislines
where rowid = :rowid;
BEGIN
OPEN rql;
FETCH rql into cref, cpar, csupp, crstat;
CLOSE rql;
IF cref is not null
AND crstat = 'A' THEN
UPDATE r5catalogue
SET cat_ref = cref
WHERE cat_part = cpar
AND cat_supplier = csupp;
END IF;
END;
И пример SQL*Plus, и пример PL/SQL размещаются в инструкции SQL в форме Flex SQL. В этих примерах активируется таблица R5REQUISLINES. Пример SQL*Plus представляет собой триггер post-insert (после вставки), а пример PL/SQL — post-update (после обновления).