powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить список таблиц из запроса
14 сообщений из 14, страница 1 из 1
Получить список таблиц из запроса
    #39812964
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста:
Можно ли получить список таблиц из запроса (сквозь view тоже нужно уметь) средствами оракла?
То есть на вход select на выход список таблиц - есть такое?
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39812972
Oleg M.Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheese))),
легко
Код: plsql
1.
select table_name from dba_tables;
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39812981
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg M.IvanovCheese))),
легко
Код: plsql
1.
select table_name from dba_tables;


и какой будет список таблиц для запроса select "table_name from dba_tables;"?

....
stax
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39812992
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg M.Ivanov,

Не список всех таблиц в базе, а список таблиц участвующих в запросе, который я передал, например
GetTablesFromQuery('select ... from table1, table2, view1 where ... ') на выход получаю
OWNER TABLE1
OWNER TABLE2
OWNER TABLE3 (из view1)
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39812999
Oleg M.Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheese))),

а.... неправильно понял суть вопроса.

Средствами оракла, наверно, не получить. Я в таком случае в текстовом редакторе Ultraedit извращался, т.е. переносил FROM и остаток строки на новую строку, затем убирал все пробелы, кроме одного, затем убирал переносы строк после FROM и пробела, потом сортировал и получалось куча строк типа
FROM table1
FROM table2
FROM table3
....
Там, конечно, могут встретиться и
FROM (select ....
Но такие варианты уже глазами смотришь.
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813008
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg M.IvanovЯ в таком случае в текстовом редакторе Ultraedit извращался

получить список таблиц для Вашего простенького запроса
"select table_name from dba_tables;"
Ultraedit не поможет

.....
stax
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813012
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheese)))список таблиц участвующих в запросезависит от целей
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813014
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheese))),

из плана ?
Код: plsql
1.
2.
3.
begin
  execute immediate 'explain plan for .....';
end;
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813017
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
копать там
Код: plsql
1.
2.
create view v0001 as select table_name from dba_tables;
select * from all_dependencies where owner=user and name= 'V0001';


а дальше в *_views
и по кругу, по кругу ..
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813022
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
select t.name from tables t where 'select 1 from dual' like '%'||t.name||'%'
union
select t.name from tables t join views v on v.select like '%'||t.NAME||'%' 
 where 'select 1 from dual' like '%'||v.name||'%'
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813024
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййCheese))),
из плана ?
напр данные токо из индекса
select empno from emp;

ps
+ пробежатся по линках
.....
stax
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813026
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Cheese)))список таблиц участвующих в запросезависит от целей

Двухзвенка, хочу кэшировать справочники на клиенте на локальном компьютере.
Алгоритм предполагаю такой:
1) Получаю хэши запросов справочников
2) Лезу с ними в табличке аля хэш справочника + хэш данных ответа
3) Проверяю есть ли хэш справочника + хэш данных ответа на локальном компе, если совпадает можно не выполнять запрос на сервере и использовать локальный, если хэш данных ответа изменился значит надо перезалить данные в локальный хэш

Триггерами отслеживаю изменение справочников и сбрасываю хэш данных ответа для пересчета.
хэш справочника соответственно соответственно должен иметь связь со списком таблиц для отслеживания инвалидации.

Можно было бы руками отслеживать в каком запросе какие таблицы, но боюсь долго не протянет такая система, поэтому хочется всё это автоматизировать.

123ййCheese))),

из плана ?
Код: plsql
1.
2.
3.
begin
  execute immediate 'explain plan for .....';
end;



Думал об этом, но там нужно еще из индексов в таблицы выходить + трансформации (не уверен что если оптимизатор выкинул таблицу по ключам, то и я не должен ее отслеживать).

orawishкопать там
Код: plsql
1.
2.
create view v0001 as select table_name from dba_tables;
select * from all_dependencies where owner=user and name= 'V0001';


а дальше в *_views
и по кругу, по кругу ..

Спасибо, наверное рабочий вариант, только думал оракл уже умеет отдавать инфу такую, а это всё окольные пути какие-то.
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813027
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheese)))отслеживаю изменение справочниковQRCN
...
Рейтинг: 0 / 0
Получить список таблиц из запроса
    #39813450
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Cheese)))отслеживаю изменение справочниковQRCN

Хочется воспользоваться данным механизмом, но вот какая штука:
Механизм в описание предполагает трехзвенку, где средний слой кэширует справочники и соответственно регает запросы, у меня предполагается справочники хранить на клиентах и среднего слоя нет - двухзвенка, клиенты регать справочники не будут.
Можно зарегать справочники из pl/sql, но если программист клиента изменил запрос справочника, то всё поехало, помнить об этом этом механизме постоянно - не вариант. Выход был скрыть запросы во view, но QRCN не поддерживает view. Можно из клиента делать запрос во view, а чтобы регать в QRCN доставать запрос для view из словаря - но это опять костыли какие-то.

Может есть более красивое решение для двухзвенки с QRCN или я что-то не так понял?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить список таблиц из запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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