Для простоты у меня есть 2 таблицы, я изменил имена таблиц и удалил ненужные столбцы:
ТАБЛИЦА A (b_ref, создан, обнаружен)
TABLE B (id, retention_period) )
Я пытаюсь создать процедуру, которая установит значение «A.detected» для каждой записи «A» равным 1, если «A.created» Date старше, чем дни «B.retention_period» .
Основываясь на некоторых уроках и других темах здесь, я сделал это - что даже не компилируется:
1 CREATE OR REPLACE PROCEDURE DETECT_RETENTION_EXPIRE AS
2 BEGIN
3 UPDATE(
4 SELECT b_ref, created , b.id , b.retention_period
5 FROM A
6 INNER JOIN B b
7 ON b_ref = b.id
8 WHERE created <= (SYSDATE - interval b.retention_period day)
9 ) a
10 SET a.detected = 1;
11
12 END DETECT_RETENTION_EXPIRE;
Компилятор выдает мне следующие ОШИБКИ:
On line 4 - PL/SQL: SQL STATEMENT IGNORED
On line 9 - PL/SQL: ORA_00907: RIGHT BRACKET MISSING
Я не уверен, что я делаю неправильно, вы можете мне помочь?
Заранее спасибо