Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Вт Мар 17, 2015 06:13  CLS_OBJECT_NOT_FOUND |
|
Полезность: Нет оценки
|
В результате выполнения запроса:
[code] for(
select cr_all(
cr_all
,cr_all.id :C_ID
,cr_all.[LIST_PLAN_PAY] :C_LIST_PLAN_PAY
,::[PR_CRED].[L].GetSumDebt(cr_all.id, ::[VID_DEBT]([CODE] = 'ПРОСРОЧ_КРЕДИТ'), V_DATE1) :SUM_PROS_CR
,::[PR_CRED].[L].GetSumDebt(cr_all.id, ::[VID_DEBT]([CODE] = 'ПЕНЯ_КРЕДИТ'), V_DATE1) :PENYA_CRED
,::[PR_CRED].[L].GetSumDebt(cr_all.id, ::[VID_DEBT]([CODE] = 'ПЕНЯ_ПРОЦЕНТЫ'), V_DATE1) :PENYA_PRC
,::[PR_CRED].[L].GetAmount(cr_all.id,'КРЕДИТ',V_DATE1) :GET_AMNT_CR
)
in
(select cr(
cr%id :ID
,cr.[NUM_DOG] :NUM_DOG
,cr.[CLIENT].NAME :CLIENT
,cr.[CLIENT].[CONTACTS] :TNUMB
,cr.[CREATE_USER] :CREATE_USER
,cr.[SUMMA_DOG] :SUMMA_DOG
,cr.[DATE_ENDING] :DATE_ENDING
,cr.[KIND_CREDIT].[CODE] :KIND_CREDIT
,::[PR_CRED].[L].GetAmount(cr%id, 'ПРОСРОЧ_ПРОЦЕНТЫ_ЗА_КРЕДИТ', V_DATE1) :SUM_PROS_PRC
,::[PR_CRED].[L].GetAmount(cr%id,'ПРОСРОЧ_КРЕДИТ',V_DATE1) :GET_AMNT_PROS_CR
,cr.[FT_CREDIT].[CUR_SHORT] :MONEY_TYPE
,cr.[DEPART] :DEPART
,cr.[ESH_SECTOR].[NAME] :ESH_SECTOR
,cr.[OKOHX].[NAME] :OKOHX
,cr.[FT_CREDIT].[CUR_SHORT] :VALUTA
,cr.[LIST_PLAN_PAY] :LIST_PLAN_PAY
)
in ::[PR_CRED] all
where (cr.[DATE_CLOSE] is null or cr.[DATE_CLOSE]>V_DATE1)
and (cr.[DEPART].[CODE] like V_PODR.[code]||'%')
and (V_SECTOR is null or cr.[ESH_SECTOR]=V_SECTOR)
and (V_SUMMA is null or cr.[SUMMA_DOG]<=V_SUMMA)
and (cr.[FT_CREDIT].[CUR_SHORT]='USD' or cr.[FT_CREDIT].[CUR_SHORT]='TJS')
order by cr.[FT_CREDIT].[CUR_SHORT] desc, cr.[CREATE_USER] asc)
-----------------------------------------------------------------------
all where
cr_all.SUM_PROS_PRC > 0 or cr_all.GET_AMNT_PROS_CR > 0
)
loop
[/code]
периодически выводится ошибка вида(рисунок в файле архив)
кто нибудь знает причину возникновения такой ошибки?
Последний раз редактировалось: jamil (Вт Мар 17, 2015 09:57), всего редактировалось 1 раз |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Вт Мар 17, 2015 09:11   |
|
Полезность: Нет оценки
|
...mdb`шку в студию... |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Мар 17, 2015 10:31  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: 1
|
Ошибка возникает, если обратиться к экземпляру, которого уже нет.
Это, скорее всего, происходит в одной из функций, упомянутых в запросе. Возможно даже, что из-за удаления кредита, процесс обработки которого выполняется в настоящий момент.
Попробуйте сделать в них перехват этого исключения. Можно даже вывести utils.error_stack куда-нибудь, чтобы уже целевым образом сделать заявку в ЦФТ  |
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Вт Мар 17, 2015 10:53  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: Нет оценки
|
Random пишет: | Ошибка возникает, если обратиться к экземпляру, которого уже нет.
Это, скорее всего, происходит в одной из функций, упомянутых в запросе. Возможно даже, что из-за удаления кредита, процесс обработки которого выполняется в настоящий момент.
Попробуйте сделать в них перехват этого исключения. Можно даже вывести utils.error_stack куда-нибудь, чтобы уже целевым образом сделать заявку в ЦФТ  |
то есть может так быть, что в то время как кредит обрабатывается в select -е его удаляют?
разве он не блокируется? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Мар 17, 2015 12:51  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: 1
|
К вопросу не относится, но
Код: | and (V_SECTOR is null or cr.[ESH_SECTOR]=V_SECTOR)
and (cr.[FT_CREDIT].[CUR_SHORT]='USD' or cr.[FT_CREDIT].[CUR_SHORT]='TJS') |
лучше пейсать так
Код: |
and (nvl(V_SECTOR, cr.[ESH_SECTOR])=cr.[ESH_SECTOR])
and cr.[FT_CREDIT] in ( ::[FT_MONEY] ([CUR_SHORT]='USD') , ::[FT_MONEY] ([CUR_SHORT]='TJS'))
|
|
|
 |
jamil Участник - экстремал
Вступление в Клуб: 11.08.2014
|
Вт Мар 17, 2015 12:57  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: Нет оценки
|
vtar пишет: | К вопросу не относится, но
Код: | and (V_SECTOR is null or cr.[ESH_SECTOR]=V_SECTOR)
and (cr.[FT_CREDIT].[CUR_SHORT]='USD' or cr.[FT_CREDIT].[CUR_SHORT]='TJS') |
лучше пейсать так
Код: |
and (nvl(V_SECTOR, cr.[ESH_SECTOR])=cr.[ESH_SECTOR])
and cr.[FT_CREDIT] in ( ::[FT_MONEY] ([CUR_SHORT]='USD') , ::[FT_MONEY] ([CUR_SHORT]='TJS'))
|
|
спасибо за совет, в будущем учту
а по поводу вопроса что то можете сказать? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Вт Мар 17, 2015 13:21  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: Нет оценки
|
jamil пишет: | спасибо за совет, в будущем учту
а по поводу вопроса что то можете сказать? |
Вам уже ответили
Random пишет: | Ошибка возникает, если обратиться к экземпляру, которого уже нет.
Это, скорее всего, происходит в одной из функций, упомянутых в запросе. Возможно даже, что из-за удаления кредита, |
Способ решения
1. Административный - тот кто запускает отчет, сначала ждет подтверждения от бэк-офиса, что все операции с кредитами завершены.
2. технический - формировать отчет на READ-ONLY БД STAND-BY , например |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Ср Мар 18, 2015 05:46  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: Нет оценки
|
jamil пишет: | Random пишет: | Ошибка возникает, если обратиться к экземпляру, которого уже нет.
|
то есть может так быть, что в то время как кредит обрабатывается в select -е его удаляют?
разве он не блокируется? |
нет, конечно, с чего бы. |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Ср Мар 18, 2015 05:48  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: Нет оценки
|
vtar пишет: | лучше пейсать так
Код: |
and (nvl(V_SECTOR, cr.[ESH_SECTOR])=cr.[ESH_SECTOR])
and cr.[FT_CREDIT] in ( ::[FT_MONEY] ([CUR_SHORT]='USD') , ::[FT_MONEY] ([CUR_SHORT]='TJS'))
|
|
по второму and - согласен;
по первому and - не согласен.
nvl - функция, и не позволяет Oracle использовать индекс, если он есть, конечно. |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Ср Мар 18, 2015 05:50  Re: CLS_OBJECT_NOT_FOUND |
|
Полезность: Нет оценки
|
vtar пишет: | Способ решения
1. Административный - тот кто запускает отчет, сначала ждет подтверждения от бэк-офиса, что все операции с кредитами завершены.
2. технический - формировать отчет на READ-ONLY БД STAND-BY , например |
Есть ещё один способ. Вместо упомянутых функций написать и использовать свои (или сделать заявку в ЦФТ), где существует перехват исключения и возврат незначащих значений. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|