Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно хранимую процедуру с параметрами из задания выполнить? / 13 сообщений из 13, страница 1 из 1
03.10.2018, 12:40
    #39712377
nufnuf13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
Вот как это корректно написать можно:
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;
...
Рейтинг: 0 / 0
03.10.2018, 13:02
    #39712381
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
nufnuf13,

тебе нужно "выполнить немедленно".
...
Рейтинг: 0 / 0
03.10.2018, 13:06
    #39712383
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
nufnuf13, хотя я наверное тебя не так понял.
Видимо, в твоем случае просто

Код: plsql
1.
''01.01.2018'',''31.01.2018''
...
Рейтинг: 0 / 0
03.10.2018, 14:28
    #39712457
nufnuf13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
Обычным способом вот так запускаю:
exec XXRWC_DATA_SET.uds_internal_railroad_hist(to_date('01.01.2018','dd.mm.rrrr'),to_date('31.01.2018','dd.mm.rrrr'))
...
Рейтинг: 0 / 0
03.10.2018, 14:29
    #39712458
nufnuf13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
А как здесь DBMS_SCHEDULER.CREATE_JOB это же написать.
...
Рейтинг: 0 / 0
03.10.2018, 14:43
    #39712469
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
nufnuf13А как здесь DBMS_SCHEDULER.CREATE_JOB это же написать.

Используй Q-литералы если есть кавычки внутри строковых литералов. Для дат используй DATE литералы:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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.
...
Рейтинг: 0 / 0
03.10.2018, 15:06
    #39712491
nufnuf13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
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.
...
Рейтинг: 0 / 0
03.10.2018, 15:09
    #39712492
nufnuf13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
На счет одноразовости: у меня есть процедура одноразовая (ну так уж получилось..) и многоразовая(без параметров).
И мне стало интересно, как с параметрами можно запустить. Вот такая история :)
...
Рейтинг: 0 / 0
03.10.2018, 16:20
    #39712541
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
nufnuf13 Спасибки, но завершается с ошибкой :


Упс:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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 параметров не поддерживает:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
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.
...
Рейтинг: 0 / 0
03.10.2018, 16:28
    #39712543
nufnuf13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
SY,ясно, завтра попробую, сегодня не успеваю...
...
Рейтинг: 0 / 0
03.10.2018, 16:38
    #39712550
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
SYJOB_TYPE STORED_PROCEDURE параметров не поддерживает
Я бы сказал - JOB_TYPE STORED_PROCEDURE не интерпретирует job_action как pl/sql блок, что как бы логично.
А параметры он вполне себе поддерживает.
Литералы нет, а параметры - да :)
Хинт: надо program создать и задефайнить эти самые параметры.
...
Рейтинг: 0 / 0
03.10.2018, 17:01
    #39712558
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
andrey_anonymousХинт: надо program создать и задефайнить эти самые параметры.Что-то вы оба недоперегибаете…
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
SQL> BEGIN
  2    DBMS_SCHEDULER.create_job(
  3      job_name            => 'QZ_JOB'
  4     ,job_type            => 'STORED_PROCEDURE'
  5     ,job_action          => 'DBMS_APPLICATION_INFO.SET_ACTION'
  6     ,number_of_arguments => 1);
  7
  8    DBMS_SCHEDULER.set_job_argument_value(
  9      job_name          => 'QZ_JOB'
 10     ,argument_position => 1
 11     ,argument_value    => 'be or not');
 12  END;
 13  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2    DBMS_SCHEDULER.run_job(
  3      job_name            => 'QZ_JOB'
  4     ,use_current_session => TRUE);
  5  END;
  6  /

PL/SQL procedure successfully completed.

SQL>
SQL> select action from v$session where sid = sys_context('userenv', 'sid');

ACTION
----------------------------------------------------------------
be or not

1 row selected.

SQL>
SQL> exec  DBMS_SCHEDULER.drop_job('QZ_JOB');

PL/SQL procedure successfully completed.

...
Рейтинг: 0 / 0
03.10.2018, 17:20
    #39712573
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно хранимую процедуру с параметрами из задания выполнить?
А какой смысл при одноразовом выполнении?

При многоразовом тоже смысла не так чтобы:

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.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно хранимую процедуру с параметрами из задания выполнить? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]