CftClub.ru
Клуб специалистов ЦФТ-Банк

Программный вызов CTRL+R (поиск ссылок на экземпляр)

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
Эксперт
Резидент CftClub


Вступление в Клуб: 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)
медленней ?
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru