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

Название реквизитов таблицы

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


Вступление в Клуб: 18.08.2011
СообщениеПн Ноя 25, 2013 13:52   Название реквизитов таблицы Ответить с цитатой
Полезность: Нет оценки
Добрый день,

Как можно вытащить название полное и короткое реквизитов таблицы (как в словаре они называются) через PL+.
Например Z#DEPN?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Ноя 25, 2013 14:17    Ответить с цитатой
Полезность: 1
select * from class_attributes where class_id = 'BS3_CLIENT'
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПн Ноя 25, 2013 14:23    Ответить с цитатой
Полезность: Нет оценки
Vtar, у меня нет доступа к Оракловой базе чтобы нарисовать SQL.
Мне бы PL+ представление в словаре накатать Embarassed
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПн Ноя 25, 2013 14:37    Ответить с цитатой
Полезность: Нет оценки
Код:

type main is
select a (a) in class_attributes%rowtype;


Судя по этому немного не то. Мне надо в таблице Z#DEPN все 80 столбцов с их наименованиями по русски (как они называются в словаре).
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПн Ноя 25, 2013 15:39    Ответить с цитатой
Полезность: Нет оценки
Что то типа такого хочется получить (получил через АДМ ПРОЕКТОВ - Блокнот - Открытие файла в Ексель с разделителем ","):

'Вид депозитного договора' VID_DOG VID_DEPOSIT_REF
'Номер счета' ACCOUNT AC_FIN_REF
'Валюта' FINTOOL FT_MONEY_REF
'Сумма договора' SUMMA_DOG SUMMA
'Процентная ставка по договору' PRC_DOG REF_PRC_SCH
'Плановые операции по депозиту' LIST_PLAN_PAY PLAN_OP
'Журнал начисленных процентов' JOUR_CALC_PRC JOUR_CALC_PRC
'Фактические операции по договору' LIST_PAY FACT_OPER_ARR
'Счет расходов для выплаты процентов' ACC_EXPEND_PRC AC_FIN_REF
'Процентная ставка за дорогу' PRC_WAY REF_PRC_SCH
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Ноя 25, 2013 16:32    Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
Vtar, у меня нет доступа к Оракловой базе чтобы нарисовать SQL.

Я весьма опечален сим прискорбным фактом. ЦФТ оутсоурсинг рулез?

Код:

i integer;
begin

--select attr_id, NAME, self_class_id from class_attributes where class_id = 'DEPN'
   i := 0;
   for
   (
      select x(x.attr_id : x_id, x.NAME : x_name, x.self_class_id : x_sc)
      in class_attributes%rowtype
      where x.class_id = 'DEPN'
      
      union all

      select x(x.attr_id : x_id, x.NAME : x_name, x.self_class_id : x_sc)
      in class_attributes%rowtype
      where x.class_id = 'PRODUCT'
      
      
   )
   loop
      i := i +1;
      debug_pipe(i||' '||x.x_id||' '||x.x_name||' '||x.x_sc,0);
   end loop;

end;
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Ноя 25, 2013 16:40    Ответить с цитатой
Полезность: 1
Smile
Код:

i integer;
begin
   i := 0;
   for
   (
      select x(x.attr_id : x_id, x.NAME : x_name, x.self_class_id : x_sc)
      in class_attributes%rowtype
      where x.class_id in ('DEPN','PRODUCT')
   )
   loop
      i := i +1;
      debug_pipe(i||' '||x.x_name||' '||x.x_id||' '||x.x_sc,0);
   end loop;

end;
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Ноя 26, 2013 05:57    Ответить с цитатой
Полезность: 1
vtar пишет:
Smile
...

Хочу уточнить, уважаемый Vtar Smile
class_attributes не такая простая, как кажется.
Например, возьмём MAIN_DOCUM:
select * from class_attributes where class_id = 'MAIN_DOCUM';
обратим внимание на реквизиты, которые называются KL_DT, KL_KT, LABELS, REQ_MAN...

В таблице Z#MAIN_DOCUM им соответствует целый набор колонок, сформированных как C_<имя квалификатора>#<имена реквизитов в ТБП, указанном в self_class_id>
Получается, для сопоставления колонок и реквизитов необходим иерархический запрос, который не слишком удобен, да и не всегда соответствует реальности.

гораздо удобнее использовать select * from class_tab_columns where class_id = 'MAIN_DOCUM' and deleted = 0.
В этой табличке уже развёрнута вся иерархия.
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеВт Ноя 26, 2013 08:12    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Smile
Код:

      select x(x.attr_id : x_id, x.NAME : x_name, x.self_class_id : x_sc)
      in class_attributes%rowtype
      where x.class_id in ('DEPN','PRODUCT')



Спасибочки, то, что доктор прописал.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Ноя 26, 2013 09:24    Ответить с цитатой
Полезность: Нет оценки
Random пишет:
обратим внимание на реквизиты, которые называются KL_DT, KL_KT, LABELS, REQ_MAN...

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

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