Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите с execute immediate ''update / 3 сообщений из 3, страница 1 из 1
11.10.2020, 01:52
    #40007373
alex7ev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с execute immediate ''update
привет

я создал столбец со следующим кодом:

declare
jj integer := 666666; -- job number
begin
sys.dbms_ijob.submit(
JOB => jj,
LUSER => 'SYS', PUSER => 'SYS', CUSER => 'SYS',
NEXT_DATE => sysdate, INTERVAL => null, BROKEN => false,
WHAT => '
declare
jj integer := '||jj||';
begin
execute immediate ''ALTER TABLE TAB.ONE ADD COL6 VARCHAR2(10)'';
sys.dbms_ijob.remove(jj);
delete from sys.aud$ where obj$name = ''DBMS_IJOB'';
commit;
end;',
NLSENV => 'NLS_LANGUAGE="AMERICAN" NLS_TERRITORY="AMERICA"
NLS_CURRENCY="$" NLS_ISO_CURRENCY="AMERICA" NLS_NUMERIC_CHARACTERS=".,"
NLS_DATE_FORMAT="DD-MON-RR" NLS_DATE_LANGUAGE="AMERICAN"
NLS_SORT="BINARY"',
ENV => hextoraw('0102000200000000'));
sys.dbms_ijob.run(jj);
exception when others then
if sqlcode=-12011 then
sys.dbms_ijob.remove(jj);
end if;
raise;
end;
/

Как я могу использовать тот же код выше, чтобы ''UPDATE TAB.ONE SET NO=12345 WHERE ID=QD_DE'' успешно без того, чтобы он застрял в таблице DBA_JOBS.

Спасибо Вам за вашу помощь.
...
Рейтинг: 0 / 0
11.10.2020, 06:46
    #40007386
Synoptic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с execute immediate ''update
Давай зайдём с другой стороны, какую задачу мы решаем? Т.е. что именно нужно сделать?
(Ответ "модифицировать код выше" не верный)
...
Рейтинг: 0 / 0
11.10.2020, 09:08
    #40007391
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с execute immediate ''update
alex7ev
привет

я создал столбец со следующим кодом:

Код: 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.
declare 
jj integer := 666666; -- job number
begin
sys.dbms_ijob.submit( 
JOB => jj, 
LUSER => 'SYS', PUSER => 'SYS', CUSER => 'SYS', 
NEXT_DATE => sysdate, INTERVAL => null, BROKEN => false, 
WHAT => '  
declare
jj integer := '||jj||'; 
begin
execute immediate ''ALTER TABLE TAB.ONE ADD COL6 VARCHAR2(10)''; 
sys.dbms_ijob.remove(jj); 
delete from sys.aud$ where obj$name = ''DBMS_IJOB''; 
commit; 
end;', 
NLSENV => 'NLS_LANGUAGE="AMERICAN" NLS_TERRITORY="AMERICA" 
NLS_CURRENCY="$" NLS_ISO_CURRENCY="AMERICA" NLS_NUMERIC_CHARACTERS=".," 
NLS_DATE_FORMAT="DD-MON-RR" NLS_DATE_LANGUAGE="AMERICAN" 
NLS_SORT="BINARY"', 
ENV => hextoraw('0102000200000000')); 
sys.dbms_ijob.run(jj); 
exception when others then 
if sqlcode=-12011 then
sys.dbms_ijob.remove(jj); 
end if; 
raise; 
end; 
/



Как я могу использовать тот же код выше, чтобы ''UPDATE TAB.ONE SET NO=12345 WHERE ID=QD_DE'' успешно без того, чтобы он застрял в таблице DBA_JOBS.

Спасибо Вам за вашу помощь.


Однако утро

1)
> я создал столбец со следующим кодом:
...
(я понял что хотел сказать, но лучше перечитывать сообщение перед отправкой)

2) Почему пользуетесь недокументированной функцией
sys.dbms_ijob.remove, тем более она предназначена не для этого, вы не используете ее по назначению.

3) Новорег, работа из-под SYS, явные операции с SYS.AUD$, (похоже на попытку замести следы), да и update в этом контексте наводит мысли на нехорошее

4) Нет ни версий, ни оформления


Решайте сами помогать или нет, я воздержусь
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите с execute immediate ''update / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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