Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_job.submit with parameters / 25 сообщений из 37, страница 1 из 2
23.08.2016, 07:01:44
    #39295858
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
что неправильно сделано?жоб не срабатывает, точнее в ошибку падает
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare
I Integer;
dd date:=sysdate;
 begin 
dbms_job.submit(i,'begin execute immediate '' 
insert
    into a values(:dd) using dd''; end;',
  sysdate);
 
commit;
 
end;
...
Рейтинг: 0 / 0
23.08.2016, 07:05:12
    #39295859
dbms_job.submit with parameters
Разве using - часть dml?
...
Рейтинг: 0 / 0
23.08.2016, 07:12:24
    #39295861
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
execute immediate 'insert..' usi,
а так выдает ошибку. identifier 'DD' must be declared
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare
I Integer;
dd date:=sysdate;
 begin 
dbms_job.submit(i,'begin execute immediate '' 
insert
    into a values(:dd) ' 'using dd; end;',
  sysdate);
 
commit;
 
end;
...
Рейтинг: 0 / 0
23.08.2016, 07:22:54
    #39295865
dbms_job.submit with parameters
Cydia,

Ну дык ясное дело, откуда же ваш plsql блок знает о том, что такое dd?
Ваш джоб что вызывает, какой код?
вот этот:

Код: plsql
1.
2.
3.
4.
begin 
 execute immediate ''insert
  into a values(:dd) using dd''; 
end;


И совершенно он равнодушен к тому, что где-то там в какой-то там обертке есть такая же переменная объявленная. Такая же , а не эта
...
Рейтинг: 0 / 0
23.08.2016, 07:29:46
    #39295867
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
declare.. begin execute immediat,

т.е. в жобе это никак не сделать?
...
Рейтинг: 0 / 0
23.08.2016, 07:38:23
    #39295870
dbms_job.submit with parameters
Cydia,

А что, в джоб нельзя передать plsql блок что ли? Или plsql блок всегда начинается c begin?
Вы сможете, я верю.
...
Рейтинг: 0 / 0
23.08.2016, 07:45:28
    #39295872
dbms_job.submit with parameters
...
Рейтинг: 0 / 0
23.08.2016, 07:54:58
    #39295877
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
dbms_job.submit(i, 'declare,

если бы смог, наверное, сюда не обращался))
...
Рейтинг: 0 / 0
23.08.2016, 09:17:34
    #39295932
dbms_job.submit with parameters
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare
  i integer;
begin
  dbms_job.submit(i,
                  'declare
  dd date := sysdate;
begin
  execute immediate '' insert
    into a values(:dd) ''
    using dd;
end;',
                  sysdate);
end;
...
Рейтинг: 0 / 0
23.08.2016, 09:33:36
    #39295941
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
МЧС РФ. Спасает,
а что если параметр передается в процедуру),т.е. не анонимный блок, а в процедуре как это сделать
...
Рейтинг: 0 / 0
23.08.2016, 09:53:44
    #39295956
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Cydiaа что если параметр передается в процедуру),т.е. не анонимный блок, а в процедуре как это сделать
Если процедура вызывается относительно редко и нет опасности забить разделяемый кеш своими "талантливыми" запросами, то можно использовать обычную подстановку значения через конкатенацию строк или вызов Replace.

P.S. Для даты выполнить явную конвертацию в строку по заданному формату перед подстановкой через to_char, при подстановке сделать обратное преобразование с тем же форматом через to_date.
...
Рейтинг: 0 / 0
23.08.2016, 10:05:33
    #39295974
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
AnSi_Sr,

а на примере показать сможете пжт.?
...
Рейтинг: 0 / 0
23.08.2016, 10:27:53
    #39296002
dbms_job.submit with parameters
Cydia,

Ну вот это вот:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
'declare
  dd date := sysdate;
begin
  execute immediate '' insert
    into a values(:dd) ''
    using dd;
end;'



это же тупо строка. Как replace к строке применить?
Если уж хочется сильно извратиться, что есть еще контекст, пакетные переменные и иже с ним, но это пушкой по воробьям микробам

У вас куча тем на более сложные темы или вы украли ник?
...
Рейтинг: 0 / 0
23.08.2016, 10:46:07
    #39296023
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Replace or not replaceпакетные переменныеНу-ну.
...
Рейтинг: 0 / 0
23.08.2016, 10:47:13
    #39296025
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Replace or not replaceУ вас куча тем на более сложные темыНе надо преувеличивать.
...
Рейтинг: 0 / 0
23.08.2016, 10:48:41
    #39296031
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Cydia,

а зачем вообще весь этот геморрой? смешались в кучу кони, людиdsql, dml, job-ы...
...
Рейтинг: 0 / 0
23.08.2016, 10:48:41
    #39296032
Му-му
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Elic,

Разве нет?
...
Рейтинг: 0 / 0
23.08.2016, 10:59:51
    #39296052
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Му-муElic,

Разве нет?Сессия, поставившая задание в очередь, и сессия, его оттуда выдедернувшая на исполнение, - разные или нет?
...
Рейтинг: 0 / 0
23.08.2016, 11:19:55
    #39296080
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Replace or not replaceэто же тупо строка. Как replace к строке применить?

как-то так:
Код: plsql
1.
2.
3.
4.
...
  -- vddate IN DATE procedure parameter;
  -- vnjob local variable, job id
  dbms_job.submit(vnjob, replace ('begin... values (to_date(:pddate, ...)); end;', ':pddate', to_char(vddate, ...)), ...);...
...
Рейтинг: 0 / 0
23.08.2016, 11:20:01
    #39296081
dbms_job.submit with parameters
Elic,

Туплю. Спасибо!
...
Рейтинг: 0 / 0
23.08.2016, 12:37:54
    #39296181
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Cydia,

У Кайта было нечто подобное до AQ и DBMS_SCHEDULER:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   sys.dbms_job.submit(l_job, 'bg_workhorse(job);');
   update/insert operations
   set id_oper = l_job;
   -- update operations
   -- set uk_job = l_job
   -- where id_oper = rec.id_oper
   commit;
 
   -- а уже bg_workhorse(job) может взять свою запись из таблицы операций
   -- (например: приоритет, процедуру для исполнения, параметры для неё и .т.д.)

   select * into l_rec from operations where uk_job = p_job;
...
Рейтинг: 0 / 0
23.08.2016, 12:38:42
    #39296182
Cydia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
еще один вопрос, можно ли в джобе запускать джоб?
...
Рейтинг: 0 / 0
23.08.2016, 12:54:47
    #39296192
arlx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Cydia,

Конечно. А в нем еще и еще.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create or replace procedure job_usr is
	-- recalc_task_return_seizure
	c_job_prefix varchar2(20) := 'USR_PREFIX_';
	c_job_owner  varchar2(3) := 'USR';
	l_job_name   varchar2(30);
	l_cnt_run    number;
	l_cnt_prm    number;
begin
for i in 1 .. 10 loop	
l_job_name := dbms_scheduler.generate_job_name(c_job_prefix);
	dbms_scheduler.create_job(job_name => c_job_owner || '.' || l_job_name, job_type => 'PLSQL_BLOCK',
job_action => 'begin job_usr; end;', start_date => null, repeat_interval => null, enabled => true, auto_drop => true);
end;
end loop;



Код: 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.
declare
  l_error exception;
  pragma exception_init(l_error, -27475);
begin
  begin
    sys.dbms_scheduler.drop_job(job_name => 'USR.JOB_USR');
  exception
    when l_error then
      null;
    when others then
      raise;
  end;
  sys.dbms_scheduler.create_job(job_name        => 'USR.JOB_USR', 
                                job_type        => 'PLSQL_BLOCK',
                                job_action      => 'begin job_usr; end;',
                                start_date      => to_date(null),
                                repeat_interval => 'Freq=Secondly;Interval=5',
                                end_date        => to_date(null),
                                job_class       => '"DEFAULT_JOB_CLASS"',
                                enabled         => true,
                                auto_drop       => false,
                                comments        => 'job usr');
end;
/
...
Рейтинг: 0 / 0
23.08.2016, 12:58:27
    #39296194
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
arlx, тему с начала читал?
...
Рейтинг: 0 / 0
23.08.2016, 13:01:52
    #39296199
arlx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbms_job.submit with parameters
Elic,

) ответил на конкретный вопрос...
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_job.submit with parameters / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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