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

Где используется реквизит
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
markoff
Участник - экстремал


Вступление в Клуб: 09.06.2009
СообщениеСр Июл 04, 2012 09:19   Где используется реквизит Ответить с цитатой
Полезность: Нет оценки
Можно узнать в каких операциях используется определенный реквизит?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Июл 04, 2012 09:28    Ответить с цитатой
Полезность: Нет оценки
Наверное только поиск по имени реквизита по текстам операций...
markoff
Участник - экстремал


Вступление в Клуб: 09.06.2009
СообщениеСр Июл 04, 2012 09:29    Ответить с цитатой
Полезность: Нет оценки
Не вариант так как имя реквизита очень распространенное
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Июл 04, 2012 09:54    Ответить с цитатой
Полезность: Нет оценки
типа,

select m.class_id, m.short_name , s.text
from sources s, methods m
where m.id = s.name
and(upper(s.text) like '%.VALUE%'
or upper(s.text) like '%.[VALUE]%')

?
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеСр Июл 04, 2012 10:08    Ответить с цитатой
Полезность: Нет оценки
чем этот селект лучше предложения Alkov?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Июл 04, 2012 10:11    Ответить с цитатой
Полезность: Нет оценки
более лучшей кастомизацией Smile

p.s. какой то трольчатый запрос -" мне нужно узнать в каких операциях используется реквизит, но имя реквизита очень распространенное => и операций найдется очень много" .

Что то нужно уточнить .... по чему фильровать.
markoff
Участник - экстремал


Вступление в Клуб: 09.06.2009
СообщениеСр Июл 04, 2012 10:20    Ответить с цитатой
Полезность: Нет оценки
Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CODE] в текстах операций.
Ghost
Профи


Вступление в Клуб: 24.11.2007
СообщениеСр Июл 04, 2012 10:40    Ответить с цитатой
Полезность: Нет оценки
markoff пишет:
Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CODE] в текстах операций.

Шутки ради. А вы переименуйте его на тестовой схеме, и все операции которые сломаются как раз и будут те в которых есть ссылка на этот реквизит. Smile
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеСр Июл 04, 2012 10:42    Ответить с цитатой
Полезность: Нет оценки
markoff пишет:
Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CODE] в текстах операций.

а зачем ? таки, цель поиска в чом заключается ?
A_A_A
Профи


Вступление в Клуб: 16.07.2009
СообщениеСр Июл 04, 2012 11:09    Ответить с цитатой
Полезность: Нет оценки
Цель возможно в необходимости узнать, повлияют ли изменения какого-то кодика на работу системы или где он используется.
(Это мое предположение)

Я обычно через поиск ищу где используется ТИП реквизита, а потом уже в резельтате поиска реквизит. Либо поиском либо глазками
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеСр Июл 04, 2012 11:54    Ответить с цитатой
Полезность: Нет оценки
Есть в системе такая хрень как инспектор объектов
там можно посмотреть зависимости. У нас он вызывается через меню система.
А нет.. для реквизита это не подойдет((
Это для экземпляра системы((
Значит перекапывать пакеты и таблицу методов
_________________
всегда есть как минимум 2 выхода
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Июл 05, 2012 07:51    Ответить с цитатой
Полезность: 1
markoff пишет:
Это скорей всего был не вопрос, а так крик души.
Практически не реально найти реквизит [CO DE] в текстах операций.


ну... можно существенно сократить количество анализируемого кода. Но там множество условий.
Во-первых, нужно посмотреть обращение к реквизиту в запросах, но так как существует такое понятие как раскрытие по точке, то нужно смотреть не на sources, а на user_source

Запрос pl/+, преобразованный в pl/sql, умещается скажем, на 5 строчках, значит:
Код:
select * from user_source s where upper(text) like '%C_C'||'ODE%'
and exists(select 1 from user_source u where u.name = s.name and u.type = s.type and u.line > s.line - 5 and u.line < s.line + 5 and upper(u.text) like 'Z#ИМЯ_КЛАССА')


Во-вторых, нужно проанализировать обращение через интерфейсник.
Код:
select * from user_source s where upper(text) like 'Z$ИМЯ_КЛАССА#INTERFACE%CO'||'DE%'


И в-третьих, объявление переменной данного типа, ::[ИМЯ_КЛАССА]%rowtype, [ИМЯ_КЛАССА] или ::[ИМЯ_КЛАССА]%rowtable и затем обращение к элементам записи, а также сохранение всей переменной посредством интерфейсника, но тут я уже ничего не могу придумать простого.

А, ну да. Есть еще синтаксис Oracle балковой вставки без указания колонок, но он через pl/sql-вставки делается. А еще можно подумать про формирование строк типа
Код:
v$str := 'update Z#CLA'||'SS set C_C'||'ODE = null'; execute immediate v$str;


Это уже не ловится.
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеЧт Июл 19, 2012 09:17    Ответить с цитатой
Полезность: 2
Есть еще поиск по зависимостям:

Например, мне недавно нужно было понять каким образом и где заполняется реквизит ::[DOC_RICHES].[DOC]

Искать по текстам операций - заняте утомительное, поскольку ключевое слово 'DOC' является, наверное, лидером по частоте использования.

Но используя в запросе таблицу Dependencies можно сократить выборку до операций, которые обращаются только к таблице DOC_RICHES и конкретно к реквизиту DOC

Код:

select     
    m.class_id,     
    m.short_name,     
    m.name,     
    d.*
from   
    dependencies d,   
    methods m
where   
      d.referenced_id = 'DOC_RICHES'
  and d.referenced_qual = 'DOC' 
  and  m.id = d.referencing_id


Далее, связываем с SOURCES и задаем шаблон поиска..

Код:

select     
    m.class_id,     
    m.short_name,     
    m.name,     
    s.text
from   
    dependencies d,   
    methods m,   
    sources s
where 
      d.referenced_id = 'DOC_RICHES' 
  and d.referenced_qual =  'DOC' 
  and m.id = d.referencing_id 
  and s.name = m.id
  and s.text like  '%[DOC]%:=%'


В получившихся 10ти записях нужная операция находится невооруженным взглядом.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Июл 19, 2012 11:56    Ответить с цитатой
Полезность: Нет оценки
Доброго времен суток, уважаемые коллеги!
В нагрузку к поиску реквизита.

Требуется ваша квалифицированная помощь. Появилась задача узнать используется ли в коде операций и представлений упоминание экземпляра системы (код или ID). Это требуется, чтобы исключить возможность удаления экземпляров из справочников.

пробовал разными методами пока результат нулевой.
так же пробовал штатными средствами системы (функцией source_word библиотеки SYSLIB). Есть какие либо идеи?
_________________
всегда есть как минимум 2 выхода
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеЧт Июл 19, 2012 13:41    Ответить с цитатой
Полезность: 1
Alexsey пишет:
Доброго времен суток, уважаемые коллеги!
В нагрузку к поиску реквизита.

Требуется ваша квалифицированная помощь. Появилась задача узнать используется ли в коде операций и представлений упоминание экземпляра системы (код или ID). Это требуется, чтобы исключить возможность удаления экземпляров из справочников.

пробовал разными методами пока результат нулевой.
так же пробовал штатными средствами системы (функцией source_word библиотеки SYSLIB). Есть какие либо идеи?


посмотри таблицу CURSORS.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

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