Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Oracle |
![]() ![]() |
nufnuf13 Member Откуда: Сообщений: 6 |
Вот как это корректно написать можно: BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'go_internal_railroad_hist' , job_type => 'STORED_PROCEDURE' , job_action => 'XXRWC_DATA_SET.uds_internal_railroad_hist('01.01.2018','31.01.2018')' , enabled => TRUE ); END; |
3 окт 18, 12:40 [21693959] Ответить | Цитировать Сообщить модератору |
merch Member Откуда: Сообщений: 130 |
nufnuf13, тебе нужно "выполнить немедленно". |
3 окт 18, 13:02 [21693981] Ответить | Цитировать Сообщить модератору |
merch Member Откуда: Сообщений: 130 |
nufnuf13, хотя я наверное тебя не так понял. Видимо, в твоем случае просто ''01.01.2018'',''31.01.2018'' |
3 окт 18, 13:06 [21693984] Ответить | Цитировать Сообщить модератору |
nufnuf13 Member Откуда: Сообщений: 6 |
Обычным способом вот так запускаю: exec XXRWC_DATA_SET.uds_internal_railroad_hist(to_date('01.01.2018','dd.mm.rrrr'),to_date('31.01.2018','dd.mm.rrrr')) |
3 окт 18, 14:28 [21694115] Ответить | Цитировать Сообщить модератору |
nufnuf13 Member Откуда: Сообщений: 6 |
А как здесь DBMS_SCHEDULER.CREATE_JOB это же написать. |
3 окт 18, 14:29 [21694117] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9340 |
Используй Q-литералы если есть кавычки внутри строковых литералов. Для дат используй DATE литералы: BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name => 'go_internal_railroad_hist', job_type => 'STORED_PROCEDURE', job_action => Q'[XXRWC_DATA_SET.uds_internal_railroad_hist( DATE '2018-01-01', DATE '2018-01-31' )]', enabled => TRUE ); END; Ну а смысл создавать одноразовый job я оставлю тебе на размышление. SY. |
||
3 окт 18, 14:43 [21694140] Ответить | Цитировать Сообщить модератору |
nufnuf13 Member Откуда: Сообщений: 6 |
SY, Спасибки, но завершается с ошибкой : Error report - ORA-27452: XXRWC_DATA_SET.uds_internal_railroad_hist( DATE '2018-01-01', DATE '2018-01-31' ) является недопустимым именем объекта базы данных. ORA-06512: на "SYS.DBMS_ISCHED", line 135 ORA-06512: на "SYS.DBMS_SCHEDULER", line 271 ORA-06512: на line 2 27452. 00000 - "\"%s\" is an invalid name for a database object." *Cause: An invalid name was used to identify a database object. *Action: Reissue the command using a valid name. |
3 окт 18, 15:06 [21694185] Ответить | Цитировать Сообщить модератору |
nufnuf13 Member Откуда: Сообщений: 6 |
На счет одноразовости: у меня есть процедура одноразовая (ну так уж получилось..) и многоразовая(без параметров). И мне стало интересно, как с параметрами можно запустить. Вот такая история :) |
3 окт 18, 15:09 [21694186] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9340 |
Упс: BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name => 'go_internal_railroad_hist', job_type => 'PLSQL_BLOCK', job_action => Q'[BEGIN XXRWC_DATA_SET.uds_internal_railroad_hist( DATE '2018-01-01', DATE '2018-01-31' ); END;]', enabled => TRUE ); END; JOB_TYPE STORED_PROCEDURE параметров не поддерживает: SQL> create or replace 2 procedure p1(n number) 3 is 4 begin 5 null; 6 end; 7 / Procedure created. SQL> BEGIN 2 DBMS_SCHEDULER.CREATE_JOB( 3 job_name => 'go_internal_railroad_hist', 4 job_type => 'STORED_PROCEDURE', 5 job_action => 'SCOTT.P1(1)', 6 enabled => TRUE 7 ); 8 END; 9 / BEGIN * ERROR at line 1: ORA-27452: "SCOTT.P1(1)" is an invalid name for a database object. ORA-06512: at "SYS.DBMS_ISCHED", line 175 ORA-06512: at "SYS.DBMS_SCHEDULER", line 288 ORA-06512: at line 2 SQL> BEGIN 2 DBMS_SCHEDULER.CREATE_JOB( 3 job_name => 'go_internal_railroad_hist', 4 job_type => 'PLSQL_BLOCK', 5 job_action => 'BEGIN SCOTT.P1(1); END;', 6 enabled => TRUE 7 ); 8 END; 9 / PL/SQL procedure successfully completed. SQL> SY. |
||
3 окт 18, 16:20 [21694285] Ответить | Цитировать Сообщить модератору |
nufnuf13 Member Откуда: Сообщений: 6 |
SY,ясно, завтра попробую, сегодня не успеваю... |
3 окт 18, 16:28 [21694292] Ответить | Цитировать Сообщить модератору |
andrey_anonymous Member Откуда: Москва Сообщений: 17091 |
Я бы сказал - JOB_TYPE STORED_PROCEDURE не интерпретирует job_action как pl/sql блок, что как бы логично. А параметры он вполне себе поддерживает. Литералы нет, а параметры - да :) Хинт: надо program создать и задефайнить эти самые параметры. |
||
3 окт 18, 16:38 [21694314] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28673 |
|
|||
3 окт 18, 17:01 [21694348] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9340 |
А какой смысл при одноразовом выполнении? При многоразовом тоже смысла не так чтобы: JOB_TYPE STORED_PROCEDURE: 1. DBMS_SCHEDULER.create_job - один раз 2. DBMS_SCHEDULER.set_job_argument_value - каждый раз перед выполнением JOB_TYPE PLSQL_BLOCK: 1. DBMS_SCHEDULER.create_job - каждый раз когда нужно выполнить За исключеним экзотики когда значения параметров для следующего выполнения становятся известны сразу после текущего выполнения a потом пропадают и DBMS_SCHEDULER.set_job_argument_value можно засунуть в SP. SY. |
3 окт 18, 17:20 [21694374] Ответить | Цитировать Сообщить модератору |
Все форумы / Oracle | ![]() |