Программный вызов CTRL+R (поиск ссылок на экземпляр)
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
German Профи
Вступление в Клуб: 25.06.2007
|
Вт Сен 15, 2009 12:18  Программный вызов CTRL+R (поиск ссылок на экземпляр) |
|
Полезность: Нет оценки
|
Подскажите, пожалуйста, можно ли из операции вызвать поиск ссылок на экземпляр, исполняемый в Навигаторе по CTRL+R ? _________________ Homo homini |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Сен 15, 2009 13:25   |
|
Полезность: 8
|
Теретически можно. Смотрите Valmgr.First_Referencing_On и Valmgr.Next_Referencing |
|
 |
r00st Эксперт
Вступление в Клуб: 14.09.2007
|
Вт Сен 15, 2009 14:01   |
|
Полезность: 7
|
Не знал о существовании этого пакета. Дмитрий, спасибо за наводку.
Вот, что получилось на быструю руку:
Код: | declare
res varchar2(20);
cl varchar2(200);
cl_name varchar2(200);
q varchar2(200);
q_name varchar2(200);
in_col varchar2(200);
idx number := 1; -- выход из цикла
begin
res := valmgr.first_referencing_on(&ID, &CLASS);
while res = '1' and idx < 100 -- экстренный выход
loop
res := valmgr.next_referencing(cl, cl_name, q, q_name, in_col);
if res = '1' then
dbms_output.put_line(cl || '; ' || cl_name || '; ' || q || '; ' || '; ' || q_name || '; ' || in_col);
end if;
idx := idx + 1;
end loop;
end; |
|
|
 |
German Профи
Вступление в Клуб: 25.06.2007
|
Вт Сен 15, 2009 14:11   |
|
Полезность: Нет оценки
|
Спасибо, работает! _________________ Homo homini |
|
 |
Sparkman Участник
Вступление в Клуб: 18.10.2010
|
Ср Янв 28, 2015 18:26   |
|
Полезность: Нет оценки
|
valmgr.next_referencing возвращает некорректные наименования полей.
Понадобилось переносить все ссылки от одного пользователя к другому, использовал следующий запрос:
Код: | -- begin pl/sql
select c.name class_name,
ctc.column_name,
ct.table_name
bulk collect into v_ref
from class_tables ct,
classes c,
class_tab_columns ctc,
class_relations cr
where ctc.base_class_id = 'REFERENCE'
and ctc.mapped_from is null
and ctc.flags is null
and ctc.deleted = '0'
and ctc.indexed = '0'
and c.id = ctc.class_id
and ct.class_id = ctc.class_id
and cr.parent_id = ctc.target_class_id
and cr.child_id = 'USER';
-- end pl/sql |
, где
- class_name - название типа
- column_name - поле, где находится искомое поле
- table_name - таблица, в которой находится поле, которое нужно обновить |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Чт Янв 29, 2015 03:09   |
|
Полезность: Нет оценки
|
Sparkman пишет: | valmgr.next_referencing возвращает некорректные наименования полей.
Понадобилось переносить все ссылки от одного пользователя к другому, |
А что стандартная для передачи ссылок [SYSTEM].PASS_REFS(cl1,cl2)
медленней ? |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|