Я работаю с определенным repeat_interval. Моя цель состояла в том, чтобы извлечь это значение из таблицы, чтобы впоследствии изменить это значение в таблице и соответствующим образом изменить задание. Для этого я сделал следующее: триггерКак получить календарное выражение из таблицы БД
CREATE OR REPLACE TRIGGER config_table_aur AFTER
UPDATE OF value ON config_table FOR EACH row WHEN (new.property = 'job_interval') DECLARE v_job NUMBER;
BEGIN
dbms_job.submit (v_job, 'begin
update_interval (' || :new.value || ');
end;');
END;
И этот триггер вызывает следующую процедуру:
CREATE OR REPLACE
PROCEDURE update_interval(
p_new_interval IN config_table.value%type)
AS
BEGIN
dbms_scheduler.set_attribute ('jobu', 'repeat_interval', p_new_interval);
END update_interval;
Где p_new_interval это значение я извлечение из таблицы. Проблема, что у меня, что если я попробовать установить значение в таблице, как это:
FREQ=DAILY; INTERVAL=1;
Тогда я получаю сообщение об ошибке сказав:
Fila 1: ORA-06550: line 2, column 46:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
year month day hour minute second
The symbol ";" was ignored.
ORA-06512: at "SYS.DBMS_JOB", line 82
ORA-06512: at "SYS.DBMS_JOB", line 140
ORA-06512: at "SOMESCHEMA.CONFIG_TABLE_AUR", line 3
ORA-04088: error during execution of trigger 'SOMESCHEMA.CONFIG_TABLE_AUR'
Я думаю, проблема в том, что атрибут значение содержит точки с запятой ';' потому что, если я их не использую, я не получаю ошибку.
У вас есть предложения обходить эту проблему?
Спасибо
Попробуйте удалить последнюю точку с запятой после «ИНТЕРВАЛ = 1» – OldProgrammer