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

%rowtable и %rowtype

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


Вступление в Клуб: 12.10.2010
СообщениеПн Авг 06, 2012 09:29   %rowtable и %rowtype Ответить с цитатой
Полезность: Нет оценки
Коллеги, столкнулся с небольшой проблемой:
В операции есть переменная V_PART_TO_LOAN типа массив "Доля обеспечения на кредитный договор".
Я хочу проинициализировать этот массив без перечисления его реквизитов. Конструкция должна выглядеть примерно сл. образом:
Код:

select x(x%rowtype([OBJECT]))
in  this.[PART_TO_LOAN]
into V_PART_TO_LOAN;


Однако, V_PART_TO_LOAN в пакете операции имеет тип
Код:

V_PART_TO_LOAN   Z#PART_TO_LOAN#INTERFACE.TABLE#PART_TO_LOAN;

И %rowtype возвращает структуру, отличную от %rowtable. Различие в представлении реквизитов типа BOOLEAN; Такие образом запрос выдает ошибку "Несоответствие типов"
Код:

TYPE CLASS#PART_TO_LOAN IS RECORD (
   ID NUMBER, CLASS_ID VARCHAR2(16), COLLECTION_ID NUMBER, STATE_ID VARCHAR2(16),
   A#PRODUCT NUMBER,
   [b]A#PRC_ATTR BOOLEAN,
   A#FIX BOOLEAN,[/b]
   A#PART NUMBER,
   A#DOCUMENT NUMBER,
   A#PRIORITY NUMBER(5),
   [b]A#AUTO BOOLEAN,[/b]
   A#NOM_PRIORITY_DOG NUMBER(5)
);
TYPE TABLE#PART_TO_LOAN IS TABLE OF CLASS#PART_TO_LOAN INDEX BY BINARY_INTEGER;


TYPE CLSROW#PART_TO_LOAN IS RECORD (
   ID NUMBER, CLASS_ID VARCHAR2(16), COLLECTION_ID NUMBER,
   C_PRODUCT NUMBER,
   [b]C_PRC_ATTR VARCHAR2(1),[/b]
   [b]C_FIX VARCHAR2(1),[/b]
   C_PART NUMBER,
   C_DOCUMENT NUMBER,
   C_PRIORITY NUMBER(5),
   [b]C_AUTO VARCHAR2(1),[/b]
   C_NOM_PRIORITY_DOG NUMBER(5)
);
TYPE TBLROW#PART_TO_LOAN IS TABLE OF CLSROW#PART_TO_LOAN;


И вобщем нифига не получается заполнить V_PART_TO_LOAN без перечисления реквизитов..

Может быть кто-то уже сталкивался с подобной проблемой и знает волшебное слово?
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПн Авг 06, 2012 12:46    Ответить с цитатой
Полезность: 3
Нужно делать примерно вот так:
Код:

V_PART_TO_LOAN ::[PART_TO_LOAN]%rowtable;

i integer;
begin
   
   select x(x%rowtype([OBJECT]), x%rowtype('nosys'))
   in  this.[PART_TO_LOAN]
   into V_PART_TO_LOAN%rowtype;

   i := V_PART_TO_LOAN%id.count;
   
   if i > 0 then
       null; -- тут нужный код   
   end if;
end;
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

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