Как осуществляется объектная связь на уровне Oracle
На страницу 1, 2 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 пишет: |
...
Но, вообще говоря, случаи разные бывают. |
Ну так на разные случаи есть различный функционал
штатный функционал + запросы в базу из внешних программ = нужный результат. Могу еще порекомендовать почитать описания таблиц. Есть такая дока в ЦФТ. Там описаны некоторые системные таблицы. Из этой доки становиться более или менее понятно, что где и как хранится. _________________ всегда есть как минимум 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   |
|
Полезность: Нет оценки
|
Вот его к сожалению нет ) Поддержка у нас не от ЦФТ, а через головную структуру. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|