Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / rowid строк вызвавших exception / 12 сообщений из 12, страница 1 из 1
25.07.2016, 10:13:36
    #39279428
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
Всем доброго времени суток! Подскажите, пожалуйста, как получить rowid строк, при обработке которых вылетает exception. Я создал темповую таблицу и хочу в нее вставлять rowid этих самых строк. Делаю так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
my_exc exception
pragma exception_init(my_exc, -31011)
begin 
select xmltype(t.data, 871)
from ttt  t where  t.doc_format_id = 6 and t.culture_code = 'ru';
exception 
  when others then 
    insert into t_t(f_rowid) values --как тут дальше не пойму



Как дальше не могу сообразить, интернеты облазил, примеры не нашел.
...
Рейтинг: 0 / 0
25.07.2016, 10:38:40
    #39279439
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
israelshamir,

либо ткните носом, что почитать, чтобы не делать это как я сейчас - через жопу
...
Рейтинг: 0 / 0
25.07.2016, 10:46:25
    #39279444
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
israelshamirчерез жопуНадо просто включить мозг.
...
Рейтинг: 0 / 0
25.07.2016, 11:09:58
    #39279464
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
Elic,

Врубился
...
Рейтинг: 0 / 0
25.07.2016, 11:12:34
    #39279469
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
Чтобы продать что-то ненужное, надо сначала купить что-то ненужное...
israelshamir
Код: plsql
1.
select ROWID rid, xmltype(t.data, 871)
...
Рейтинг: 0 / 0
25.07.2016, 12:33:09
    #39279563
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
israelshamirElic,

Врубилсяпростите, а во что именно вы врубились?
...
Рейтинг: 0 / 0
25.07.2016, 12:39:19
    #39279578
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
--Eugene--,

пришла идея наваять курсор. Правда, теперь не понимаю, где ошибка

Код: 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.
DECLARE
v_rowid rowid;
my_exc exception;
pragma exception_init(my_exc, -31011);
CURSOR cur 
IS 
select *
from  doc_template  t 
where t.doc_format_id = 6 
      and t.culture_code = 'ru';

BEGIN

Open cur;

LOOP

FETCH cur into v_row;

EXIT WHEN cur%NOTFOUND;

select rowid rid, xmltype(v_row.data, 871) xmldata from dual;
EXCEPTION
  when my_exc then
    insert into temp_t(failed_rowid) values(v_row.rowid);

END LOOP;

CLOSE cur;
END;
...
Рейтинг: 0 / 0
25.07.2016, 12:44:40
    #39279583
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
israelshamir,

Код: plaintext
select rowid rid, xmltype(v_row.data, 871) xmldata from dual;
- почти бред сумасшедшего
...
Рейтинг: 0 / 0
25.07.2016, 15:04:51
    #39279739
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
--Eugene--,

да не, это называется - курсоры с наскока не освоишь.
...
Рейтинг: 0 / 0
25.07.2016, 16:52:28
    #39279817
rowid строк вызвавших exception
israelshamirisraelshamir,

либо ткните носом, что почитать, чтобы не делать это как я сейчас - через жопу

...возрадовался.
тыц
rowid со временем может измениться, так что не затягивай с его использованием, а лучше используй первичный ключ таблицы, если есть.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create table bad_string (rowid_str rowid);

begin
for i in (select rowid from ttt  t where  t.doc_format_id = 6 and t.culture_code = 'ru') loop
 begin
   select xmltype(t.data, 871) 
   from temptable  t where t.doc_format_id = 6 and t.culture_code = 'ru'
   and rowid = i.rowid
 exception
 when others then
   insert into bad_string values(i.rowid);
 end;
end loop;
end;
/
select * from bad_string;
...
Рейтинг: 0 / 0
26.07.2016, 08:58:32
    #39280042
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
рано я в пятницу...,

огромнейшее спасибо, протестил, пашет как надо!
...
Рейтинг: 0 / 0
26.07.2016, 09:11:20
    #39280047
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
rowid строк вызвавших exception
israelshamir,

теперь основательно изучу курсоры, xmltype и xpath.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / rowid строк вызвавших exception / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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