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

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


Вступление в Клуб: 03.09.2007
СообщениеЧт Апр 24, 2008 12:05   Модификация представления Ответить с цитатой
Полезность: Нет оценки
Существует представление:
Кредиты частным лицам -> Кредиты физ. лицам.

В нем существует ссылка на фактические операции.

Как можно добавить в представление колонку с датой последнего гашения?

Добавил колонку типа даты, указал источник A10_1.C_DATE ("Дата" операции из массива "Фактические операции").

Как теперь наложить условие на вид операции и на то, что необходима дата именно последнего гашения?

Подскажите, пожалуйста, как дейтсвовать!

Заранее спасибо!
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Апр 24, 2008 12:27   Re: Модификация представления Ответить с цитатой
Полезность: 1
Kozyrev пишет:
Существует представление:
Кредиты частным лицам -> Кредиты физ. лицам.

В нем существует ссылка на фактические операции.

Как можно добавить в представление колонку с датой последнего гашения?

Добавил колонку типа даты, указал источник A10_1.C_DATE ("Дата" операции из массива "Фактические операции").

Как теперь наложить условие на вид операции и на то, что необходима дата именно последнего гашения?

Подскажите, пожалуйста, как дейтсвовать!

Заранее спасибо!

я так понял что тебе нужна последняя запись из массива...

глянь эту функцию

Код:
-- расчет процентов с даты последней записи в журнале фактических операций
::[PR_CRED].[LIB_EXT].recalc_prc_date(Cred, OnDate, VidDebt);


либо выборку из::[PR_CRED].[CALC_PRC] строка в теле операции примерно 141-я

Код:
-- Вычислить дату фиксации процентов
for ( select FO( nvl(FO.[END_DATE], FO.[DATE]) : C_DATE)
                 in oCred.[LIST_PAY]
               where FO.[OPER].[TAKE_DEBT].[DEBT] = P_DEBT
               -- не учитываем необработанные операции
                 and not (FO.[SUMMA] is null)
                 and not FO.[NEED_RECALC_PRC]
               order by FO.[DATE] desc
         ) loop
            d_Fix := FO.C_DATE;
            exit;
         end loop;


я думаю это поможет найти как раз таки поледнюю запись, а из нее несложно получить дату..
_________________
всегда есть как минимум 2 выхода
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеЧт Апр 24, 2008 13:27    Ответить с цитатой
Полезность: Нет оценки
Alexsey, а куда нужно вписывать указанный выше текст в представлении?
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Апр 24, 2008 13:29    Ответить с цитатой
Полезность: 1
Kozyrev пишет:
Alexsey, а куда нужно вписывать указанный выше текст в представлении?

мне лично, кажется что проще запихнуть этот текст в какую нить локальную библиотеку и оттуда уже вызвать... по крайней мере я бы сделал именно так, либо писать на PL+ представление
_________________
всегда есть как минимум 2 выхода
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеЧт Апр 24, 2008 14:02    Ответить с цитатой
Полезность: Нет оценки
Цитата:
я так понял что тебе нужна последняя запись из массива...

Точнее сказать, нужна последняя операция гашения процентов.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Апр 24, 2008 14:10    Ответить с цитатой
Полезность: Нет оценки
тогда FOR подходит как нельзя лучше.. ибо Р_DEBT и есть задолженность
_________________
всегда есть как минимум 2 выхода
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеЧт Апр 24, 2008 14:16    Ответить с цитатой
Полезность: 2
Kozyrev пишет:
Точнее сказать, нужна последняя операция гашения процентов.

Есть близкая по смыслу функция ::[PR_CRED].[L_ALEX].GetDataPayPROC
Только в этой функции автор еще и плановые операции смотрит в случае, если фактические не найдены.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Апр 24, 2008 14:23    Ответить с цитатой
Полезность: Нет оценки
timochev пишет:
Kozyrev пишет:
Точнее сказать, нужна последняя операция гашения процентов.

Есть близкая по смыслу функция ::[PR_CRED].[L_ALEX].GetDataPayPROC
Только в этой функции автор еще и плановые операции смотрит в случае, если фактические не найдены.

прикольная функция.. получается вызываешь ее и получаешь готовую дату.. только в условии надо подправить какая именно задолженность интересует
_________________
всегда есть как минимум 2 выхода
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеЧт Апр 24, 2008 14:25    Ответить с цитатой
Полезность: Нет оценки
Цитата:
проще запихнуть этот текст в какую нить локальную библиотеку и оттуда уже вызвать...

Как можно вызвать операции в представлении?
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Апр 24, 2008 14:28    Ответить с цитатой
Полезность: 1
timochev пишет:
Если представление простое, то добавляем колонку, а в поле "Источник данных" пишем вызов функции в формате PL\SQL.
Если вьюха PL+, то в списке запрашиваемых полей просто в формате PL+ пишем вызов функции.

выглядеть будет примерно так:
Код:
Z$PR_CRED_L_ALEX.GetDataPayPROC(A1_1.ID,/*PL+*/::[SYSTEM].[OP_DATE]/*PL-*/)

_________________
всегда есть как минимум 2 выхода


Последний раз редактировалось: Alexsey (Чт Апр 24, 2008 14:35), всего редактировалось 3 раз(а)
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеЧт Апр 24, 2008 14:29    Ответить с цитатой
Полезность: 1
Если представление простое, то добавляем колонку, а в поле "Источник данных" пишем вызов функции в формате PL\SQL.
Если вьюха PL+, то в списке запрашиваемых полей просто в формате PL+ пишем вызов функции.
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеПн Апр 28, 2008 10:19    Ответить с цитатой
Полезность: Нет оценки
Точнее сказать:
Код:

Z$PR_CRED_L_ALEX.GetDataPayPROC(A1_1.ID,sysdate)
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Апр 28, 2008 10:21    Ответить с цитатой
Полезность: Нет оценки
Kozyrev пишет:
Точнее сказать:
Код:

Z$PR_CRED_L_ALEX.GetDataPayPROC(A1_1.ID,sysdate)

sysdate это системная дата не зависящая от опердня.. хотя кому как удобнее
_________________
всегда есть как минимум 2 выхода
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеПн Апр 28, 2008 10:43    Ответить с цитатой
Полезность: Нет оценки
Код:
/*PL+*/::[SYSTEM].[OP_DATE]/*PL-*/

Не проходит...
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Апр 28, 2008 10:45    Ответить с цитатой
Полезность: Нет оценки
Kozyrev пишет:
Код:
/*PL+*/::[SYSTEM].[OP_DATE]/*PL-*/

Не проходит...

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

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