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

Как осуществляется объектная связь на уровне Oracle
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Интеграция с внешними подсистемами
Предыдущая тема :: Следующая тема  
Автор Сообщение
Sandro74
Участник


Вступление в Клуб: 07.06.2012
СообщениеПт Июл 20, 2012 12:54   Как осуществляется объектная связь на уровне Oracle Ответить с цитатой
Полезность: Нет оценки
Задача немного странная , но вот встала ) Надо написать SQL-PL\SQL, скрипт, который будет отображать все таблицы в которых присутствует ссылка на экземпляр. По аналогии "Поиск ссылок на экземпляр" в навигаторе. Я конечно могу искать id экземпляра, по всем таблицам схемы и во всех столбцах, но запрос получится крайне варварский и выполняться будет ооочень долго, интересно как это реализовано в том же навигаторе, может кто нить сталкивался с этим ?
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПт Июл 20, 2012 16:42    Ответить с цитатой
Полезность: Нет оценки
Подобная тема рассмотрена тут
_________________
всегда есть как минимум 2 выхода
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПн Июл 23, 2012 08:57   Re: Как осуществляется объектная связь на уровне Oracle Ответить с цитатой
Полезность: Нет оценки
Sandro74 пишет:
Задача немного странная , но вот встала ) Надо написать SQL-PL\SQL, скрипт, который будет отображать все таблицы в которых присутствует ссылка на экземпляр. По аналогии "Поиск ссылок на экземпляр" в навигаторе. Я конечно могу искать id экземпляра, по всем таблицам схемы и во всех столбцах, но запрос получится крайне варварский и выполняться будет ооочень долго, интересно как это реализовано в том же навигаторе, может кто нить сталкивался с этим ?


как-то так, obj_id только на нужное значение поменять надо

PL/SQL
Код:

declare
   obj_id varchar2(30);
   obj_class varchar2(100);
   sql_str varchar2(32000);
 begin
   

 obj_id:='50249917'; --ID искомого экземпляра

 obj_class:= rtl.object_class(obj_id);

     for c in (select * from class_tab_columns ctc
         where deleted = '0' and base_class_id ='REFERENCE' and exists (
         select parent_id from class_relations
         where child_id = obj_class and parent_id = ctc. target_class_id
        )
         and exists (
             select 1
             from classes cls
             where cls.has_instances='1'
             start with cls.id = ctc.target_class_id
             connect by prior cls.id = cls.parent_id
             )
        ) loop
         
         
       sql_str:=
       'begin ' ||
       'for c in (select id from ' || c.table_name || ' where ' || c.column_name || '=''' ||obj_id || ''') loop ' ||
        'dbms_output.put_line(''таблица ' || c.table_name||' реквизит '||c.column_name||'''); '||
        'exit;'||
       'end loop; ' ||
       'end;' ; 
       
       execute immediate sql_str;
       
    end loop;
   
 end;


Последний раз редактировалось: devor (Пн Июл 23, 2012 09:17), всего редактировалось 4 раз(а)
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПн Июл 23, 2012 08:59    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
Подобная тема рассмотрена тут

По ссылке - поиск объектов использующих реквизит.
А Sandro74 интересует поиск реквизитов (таблиц), содержащих конкретный экземпляр.[/b]
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Июл 23, 2012 11:32    Ответить с цитатой
Полезность: Нет оценки
А чем не устраивает штатный инспектор объектов. Он же все показывает.
Зачем изобретать велосипед?
_________________
всегда есть как минимум 2 выхода


Последний раз редактировалось: Alexsey (Пн Июл 23, 2012 14:09), всего редактировалось 1 раз
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПн Июл 23, 2012 11:47    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:

А чем не устраивает штатный инспектор объектов. Он же все показывает.
Зачем изобретать велосипед?

Вопрос не ко мне.
Но, вообще говоря, случаи разные бывают.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Июл 23, 2012 12:01    Ответить с цитатой
Полезность: 2
devor пишет:

...
Но, вообще говоря, случаи разные бывают.

Ну так на разные случаи есть различный функционалSmile
штатный функционал + запросы в базу из внешних программ = нужный результат. Могу еще порекомендовать почитать описания таблиц. Есть такая дока в ЦФТ. Там описаны некоторые системные таблицы. Из этой доки становиться более или менее понятно, что где и как хранится.
_________________
всегда есть как минимум 2 выхода


Последний раз редактировалось: Alexsey (Пн Июл 23, 2012 14:09), всего редактировалось 1 раз
Sandro74
Участник


Вступление в Клуб: 07.06.2012
СообщениеВт Июл 24, 2012 05:50    Ответить с цитатой
Полезность: Нет оценки
Ситуация сугубо политическая ) Внедряется новая АБС, необходимо "посмотреть" , какая информация содержится по объекту в старой АБС и к чему он привязан, грубо говоря , нужны таблицы в которых задействован id экземпляра. Администраторы старой АБС просят предоставить SQL запрос, который им необходимо для этого выполнить ) Доступа у меня к этой АБС нет )
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеВт Июл 24, 2012 06:04    Ответить с цитатой
Полезность: Нет оценки
Sandro74 пишет:
Ситуация сугубо политическая ) Внедряется новая АБС, необходимо "посмотреть" , какая информация содержится по объекту в старой АБС и к чему он привязан, грубо говоря , нужны таблицы в которых задействован id экземпляра. Администраторы старой АБС просят предоставить SQL запрос, который им необходимо для этого выполнить ) Доступа у меня к этой АБС нет )

Переходите с ИБСО на что-то другое?
На что, если не секрет?
Sandro74
Участник


Вступление в Клуб: 07.06.2012
СообщениеВт Июл 24, 2012 07:38    Ответить с цитатой
Полезность: Нет оценки
Такие вопросы в личку )
Sandro74
Участник


Вступление в Клуб: 07.06.2012
СообщениеВт Июл 24, 2012 07:40    Ответить с цитатой
Полезность: Нет оценки
Ребят, а можно ещё ссылки на документацию, доступа на ЦФТ-й ресурс нету, а та документация что есть, она гораздо старее той, что мне скинули. Ещё раз спасибо за доку.
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеВт Июл 24, 2012 12:05    Ответить с цитатой
Полезность: Нет оценки
Sandro74 пишет:
Ребят, а можно ещё ссылки на документацию, доступа на ЦФТ-й ресурс нету, а та документация что есть, она гораздо старее той, что мне скинули. Ещё раз спасибо за доку.

Я же выше написал PL/SQL-процедуру которая выведет список таблиц и реквизитов ссылающихся на экземпляр.
Sandro74
Участник


Вступление в Клуб: 07.06.2012
СообщениеСр Июл 25, 2012 07:43    Ответить с цитатой
Полезность: Нет оценки
Devor, ещё раз огромное спасибо за процедуру, что нужно. Просто документацию глянул, захотелось ещё), та что у меня есть от предшественника , но там инфы совсем мало. Просто есть мысль работу сменить и переехать в "Нерезиновую", вакансии посмотрел, на ЦФТ спрос есть, вот решил поднабраться перед собеседованиями.
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСр Июл 25, 2012 08:05    Ответить с цитатой
Полезность: Нет оценки
Sandro74 пишет:
Devor, ещё раз огромное спасибо за процедуру, что нужно. Просто документацию глянул, захотелось ещё), та что у меня есть от предшественника , но там инфы совсем мало. Просто есть мысль работу сменить и переехать в "Нерезиновую", вакансии посмотрел, на ЦФТ спрос есть, вот решил поднабраться перед собеседованиями.

Доку можно скачать с сайта поддержки, если есть доступ.
Рассылать материалы запрещено.
Sandro74
Участник


Вступление в Клуб: 07.06.2012
СообщениеСр Июл 25, 2012 08:48    Ответить с цитатой
Полезность: Нет оценки
Вот его к сожалению нет ) Поддержка у нас не от ЦФТ, а через головную структуру.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Интеграция с внешними подсистемами Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

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