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

Автоматическая генерилка ПОС-ПОТ

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


Вступление в Клуб: 24.06.2008
СообщениеСб Авг 30, 2008 13:23   Автоматическая генерилка ПОС-ПОТ Ответить с цитатой
Полезность: Нет оценки
День коллеги, возникла необходимость создания новых ПОТ... а у нас только ПОСов штук 150 следовательно ПОТов будет *4 (%, просрочка, наша комиссия, наши штрафы)
написал небольшую оперу и возникли вопросы..

переменные на форме :
V_TYPE_ACC - массив ссылок на "типы счетов"
ACC_PORT - выбор из двух
ADD_TO_NAME строка
TYPE_RECORD - ссылка на "тип элемента расчетной базы"

Код:

my_RES_RISK_GROUPS ref [RES_RISK_GROUPS] := null;
My_NEW_PORT ref [RES_PORT] := null;
my_TIP_ACC ref [TIP_ACC] := null;
my_TIP_ACC_REF_ARR [TIP_ACC_REF_ARR];
Create_PORT number := null;

begin

   If ACC_PORT.[0] = 1 then Create_PORT := 1;
   Else Create_PORT := nvl(V_TYPE_ACC.Count,0);
   End if;

   For count_PORT in 1..this.count loop
   
      For cycle_BY_CREATE_PORT in 1..Create_PORT loop
   
         my_RES_RISK_GROUPS := null;            My_NEW_PORT  := null;
         my_TIP_ACC  := null;
         my_TIP_ACC_REF_ARR := null;   
      
         -- создаем новый портфель
         begin
         My_NEW_PORT := ::[RES_PORT].[NEW#AUTO](
                 null
               , null
               , TYPE_RECORD
               , this(count_PORT).[FILIAL]
               , null
               , null
               , null
               , false
               , LTRIM(RTRIM(LTRIM(RTRIM(this(count_PORT).[NUM_DOG]))||' '||LTRIM(RTRIM(ADD_TO_NAME))))
               , LTRIM(RTRIM(this(count_PORT).[PORT_NAME]))
            );
         exception when OTHERS then
            Pragma error('Не удалось создать ПОТ');
         end;
   
         -- копируем группы риска
         begin
            For ( Select my_RES_GR_RATE_POS(
                    my_RES_GR_RATE_POS.[PRC_RESERV]             : RATE
                  , my_RES_GR_RATE_POS.[RISK_GROUP].[GROUP_NUM]    : RISK_GROUP_NUM
                  , my_RES_GR_RATE_POS.[DATE_START]             : BEG_DATE
                  ) in this(count_PORT).[GR_RISK_HIST]
            ) loop
      
               locate my_RES_RISK_GROUPS in ::[RES_RISK_GROUPS] where my_RES_RISK_GROUPS.[NUM] = my_RES_GR_RATE_POS.[RISK_GROUP_NUM];
         
               My_NEW_PORT.[GR_RISK].[NEW#AUTO](
                    my_RES_GR_RATE_POS.[BEG_DATE]
                  , my_RES_RISK_GROUPS
                  , my_RES_GR_RATE_POS.[RATE]
               );

            End loop;
         exception when OTHERS then
            Pragma error('Ошибка при копировании групп риска');
         end;

         -- создаем связь ПОС-ПОТ
         begin
         
            my_TIP_ACC_REF_ARR%init;
            
            if Create_PORT = 1 then
            
               for x in 1..V_TYPE_ACC.Count loop
            
                  my_TIP_ACC := V_TYPE_ACC(x);
            
                  my_TIP_ACC_REF_ARR.[NEW#AUTO]( my_TIP_ACC );
      
               end loop;
                  
            Else

               my_TIP_ACC := V_TYPE_ACC(cycle_BY_CREATE_PORT);
                  
               my_TIP_ACC_REF_ARR.[NEW#AUTO]( my_TIP_ACC );
                  
            end if;

            this(count_PORT).[SLP_RESP_ARR].[NEW#AUTO](
                    My_NEW_PORT   
                  , my_TIP_ACC_REF_ARR
            );
         
         exception when OTHERS then
            pragma error('Не удалось установить связь ПОС-ПОТ');
         end;
      
      end loop;
   
   end loop;

end;



вопрос один... насколько корректена моя работа с my_TIP_ACC_REF_ARR..

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

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