powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно хранимую процедуру с параметрами из задания выполнить?
13 сообщений из 13, страница 1 из 1
Можно хранимую процедуру с параметрами из задания выполнить?
    #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
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712381
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nufnuf13,

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

Код: plsql
1.
''01.01.2018'',''31.01.2018''
...
Рейтинг: 0 / 0
Можно хранимую процедуру с параметрами из задания выполнить?
    #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
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712458
nufnuf13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как здесь DBMS_SCHEDULER.CREATE_JOB это же написать.
...
Рейтинг: 0 / 0
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712469
Фотография 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
Можно хранимую процедуру с параметрами из задания выполнить?
    #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
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712492
nufnuf13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На счет одноразовости: у меня есть процедура одноразовая (ну так уж получилось..) и многоразовая(без параметров).
И мне стало интересно, как с параметрами можно запустить. Вот такая история :)
...
Рейтинг: 0 / 0
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712541
Фотография 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
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712543
nufnuf13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,ясно, завтра попробую, сегодня не успеваю...
...
Рейтинг: 0 / 0
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712550
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYJOB_TYPE STORED_PROCEDURE параметров не поддерживает
Я бы сказал - JOB_TYPE STORED_PROCEDURE не интерпретирует job_action как pl/sql блок, что как бы логично.
А параметры он вполне себе поддерживает.
Литералы нет, а параметры - да :)
Хинт: надо program создать и задефайнить эти самые параметры.
...
Рейтинг: 0 / 0
Можно хранимую процедуру с параметрами из задания выполнить?
    #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
Можно хранимую процедуру с параметрами из задания выполнить?
    #39712573
Фотография 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
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно хранимую процедуру с параметрами из задания выполнить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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