Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Поле представления.  [new]
XAHHN
Member

Откуда:
Сообщений: 51
В представлении около 300 полей, мне надо найти откуда берутся данные для поля, оно по порядку 197-ое, не считать же запятые в запросе, может есть какойнить вариант?
7 май 07, 12:53    [4107585]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
realfreeman
Member

Откуда: Москва
Сообщений: 274
XAHHN
В представлении около 300 полей, мне надо найти откуда берутся данные для поля, оно по порядку 197-ое, не считать же запятые в запросе, может есть какойнить вариант?


А как же имя поля???
7 май 07, 12:57    [4107629]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
db-man
Guest
Если имена заданы через алиасы, то найти имя колонки:
select * from all_tab_columns
where table_name = '<view_name>'
  and column_id = 197
и потом поcмотреть текст view.

А если нет, то можно и запятые посчитать. В plsql, конечно, в тексте view.
7 май 07, 12:58    [4107632]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
XAHHN
В представлении около 300 полей, мне надо найти откуда берутся данные для поля, оно по порядку 197-ое, не считать же запятые в запросе, может есть какойнить вариант?

Обычно при написании представлений я делаю так:
CREATE VIEW my_view
AS
SELECT
   a.num+DECODE(B.varnum, 1, T.renum, a.snum) AS my_field
 , ... AS my_other_field
FROM tabla A, tabla_2 B, tabla_3 N
WHERE ...
То есть все поля именуются с помощью фразы AS
В этом случае легко найти нужное поле.
Если сделано иначе, то придется вам считать запятые...
7 май 07, 12:59    [4107639]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
XAHHN
Member

Откуда:
Сообщений: 51
имя поля то известно
проклятые индусы алиасы для полей не юзают
7 май 07, 13:02    [4107663]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
db-man
Guest
Тогда считайте запятые.

Как-то так:

declare
  cursor l_cur is
    select text from all_views where view_name = '<view_name>';
  l_text long;
  l_pos_column := 197;
begin
 open l_cur;
 fetch l_cur into l_text;
 close l_cur;
 dbms_output.put_line(
   substr(l_text, instr(l_text, ',', instr(upper(l_text), 'SELECT'), l_pos_column) - 10, 20)
 );
end;

Тут не учтены комментарии, и не тестировалось особо...
7 май 07, 13:21    [4107806]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116217
db-man
Тогда считайте запятые.

Как-то так:

Тут не учтены комментарии...


И возможные вызовы функций ...
7 май 07, 13:22    [4107819]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18359
dmidek
db-man
Тут не учтены комментарии...

И возможные вызовы функций ...

И select (select ...)
7 май 07, 13:27    [4107869]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
db-man
Guest
Еще вариант, текст запроса обработать каким-нибудь PL/SQL Beautifier-ом (фича в plsql developer-е) и перейти на 198 строку :)
7 май 07, 13:28    [4107875]     Ответить | Цитировать Сообщить модератору
 Re: Поле представления.  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116217
Я думаю , автор уже досчитал

В смысле не везде автоматизация эффективна...
7 май 07, 13:30    [4107898]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить