2014-11-17 6 views
0

Я пытался каждую минуту планировать обновление трех материализованных представлений. Я использовал код нижеПланировщик работы с СУБД для материализованного представления

BEGIN 
DBMS_SCHEDULER.CREATE_JOB 
(
JOB_NAME   => 'REFRESH_MVIEW', 
JOB_TYPE   => 'PLSQL_BLOCK', 
JOB_ACTION   => 'BEGIN DBMS_MVIEW.REFRESH("m_view1, m_view2, m_view3",''C''); END;', 
NUMBER_OF_ARGUMENTS => 0, 
START_DATE   => SYSTIMESTAMP, 
REPEAT_INTERVAL  => 'FREQ=DAILY; BYHOUR=0', 
END_DATE   => NULL, 
ENABLED    => TRUE, 
AUTO_DROP   => FALSE, 
COMMENTS   => 'JOB TO REFRESH' 
); 
END; 

Но я получаю следующее сообщение об ошибке после того, как работа была запущена

ORA-12012: ошибка автоматического выполнения из работы 57179 ORA-06550: строка ORA-06550 : строка 1, столбец 495: PLS-00114: идентификатор 'm_view1, m_view2' слишком долго , колонка:

Я понимаю, что существует ограничение на 30 символов в имени процедуры. Итак, значит ли это, что я должен разделить работу на 3 разных рабочих места? Не могли бы вы сообщить мне, где я ошибаюсь?

Спасибо заранее!

+0

Двойные кавычки ('" ') используются для разделения идентификаторов - в вашем случае, однако, вы хотите, чтобы передать строку буквальным, так что вы должны использовать одинарные кавычки (' ' '). Поскольку он находится внутри другой строки, вам нужно избегать их ('' ''), но часто проще использовать синтаксис новой цитаты, например 'q '[BEGIN DBMS_MVIEW.REFRESH (' m_view1, m_view2, m_view3 ',' C '); END;]' ' –

ответ

1

Не могли бы вы сообщить мне, где я ошибаюсь?

Попробуйте написать заявление, как, что вместо того, чтобы:

BEGIN DBMS_MVIEW.REFRESH(''m_view1,m_view2,m_view3'',''C'') 

Или

BEGIN DBMS_MVIEW.REFRESH(''m_view1,m_view2,m_view3'',''CCC'') 

Посмотреть список задается с помощью строки - так, используя одиночные кавычки. Я не знаю, являются ли пробелы релевантными в списке представлений. В сомнении, я тоже их удалил.

Обратите внимание, что в первом случае у вас есть обновление по умолчанию для следующих двух видов. Если вам нужно полное обновление для всех ваших просмотров, вы должны указать CCC как метод обновления .

См https://docs.oracle.com/cd/A97630_01/server.920/a96568/rarmviea.htm#94135

+0

Спасибо, я дам ему попробовать и опубликовать результаты. Я использовал вторую команду с '' CCC ''. –

+0

Thankyou. На этот раз не было ошибок. –