Используя DBVis SQL commander (так как я использую «начало» и «конец» в этом коде, я считаю, что этот код выполняется в стиле PL SQL) Я пытаюсь выполнить сценарий sql Я написал, чтобы быть моим новым «триггером очистки»
Я пытаюсь использовать операторы IF EXISTS в этом скрипте для достижения очистки ТОЛЬКО, когда определенный столбец действительно содержит данные (УТВЕРЖДЕНО или ОТКАЗАНО)
Этот сценарий направлен на то, чтобы НЕ использовать операторы вставки (для других таблиц) (они будут запускать другие триггеры в других таблицах нежелательным образом, если они используются, даже если для них нет данных для вставки), за исключением случаев, когда они есть ( не нулевые) данные в определенном столбце:
begin
IF EXISTS (SELECT *
FROM HUB_SEGMENTS
where APP_OR_REJECT = 'APPROVED' or APP_OR_REJECT = 'REJECTED')
THEN
INSERT INTO
HUB_APPROVED (HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE)
SELECT
HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE
FROM
HUB_SEGMENTS WHERE APP_OR_REJECT = 'APPROVED';
INSERT INTO
HUB_REJECTED (HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE)
SELECT
HUB_SEGMENTS_GUID, TID, SEGMENT, ID, ROLE, UPDATED_BY, APP_OR_REJECT, UPDATED_DATE
FROM
HUB_SEGMENTS WHERE APP_OR_REJECT = 'REJECTED';
DELETE
FROM
"TESTDEMO".HUB_SEGMENTS
WHERE
APP_OR_REJECT = 'APPROVED' or APP_OR_REJECT = 'REJECTED';
DBMS_OUTPUT.PUT_LINE('Trigger: Insert to action Tables Executed');
ELSE
DBMS_OUTPUT.PUT_LINE('Trigger: Insert to action Tables Not Executed');
end;
К сожалению, я получаю следующее сообщение об ошибке при попытке запустить это:
[Код: 6550, SQL Состояние : 65000] ORA-06550: строка 33, столбец 4: PLS-00103: Обнаружен символ ";" ожидая одного из следующего: если
Я почти уверен, что это связано с тем, как я структурировал IF EXIST
Конечно, это может быть то, что с использованием IF EXIST в DBVis SQL commander, в моем коде PL SQL, недопустим - я не видел много документации для этого специфического оператора c из oracle. Если так, был бы другой способ, которым я мог бы попытаться выполнить sh, что я пытаюсь сделать здесь?
Любое руководство будет с благодарностью