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

Вызов операцию конструктора в PL+

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


Вступление в Клуб: 19.08.2013
СообщениеСр Апр 23, 2014 15:15   Вызов операцию конструктора в PL+ Ответить с цитатой
Полезность: Нет оценки
В ТБП "Зарплата. Приказы на начисление" написал операцию чтобы добавить сотрудников в массив "Зарплата. Список сотрудников в приказе на начисление".
У меня возникает ошибка с нарушениям ограничение целостности.
Код:

--V_DOC_NAS_GROUP_REF := выбираем нужный приказ
               begin
                  V_DOC_NAS_GROUP_REF.[DOC_USER].[INSERT#AUTO](
                                                      /*P#USER_REF*/User_Ref      --Сотрудник
                                                      ,/*P#DOC_SUM*/333      --Сумма начисления
                                                      ,/*P#NAS_SUM*/null      --Сумма к выплате
                                                      ,/*P#DOC_UCH*/null      --Документ по начислению
                                                      ,/*P#DOC_NAS*/null      --Документ по выплате
                                                      ,/*P#UDER_NAS*/null      --Удержания по начислению
                                                      ,/*P#OT_NAS*/null      --Отчисления по начислению
                                                      ,/*P#KOR_SUM*/null      --Корректирующая сумма
                                                      ,/*P#DOC_PR*/null      --Процент начисления
                                                      ,/*P#KOR_PR*/null      --Корректирующий процент
                                                      ,/*P#BASE_PRC*/null      --Базовый коэффициент
                                                      ,/*P#KOEF_OPL_STAG*/null      --Коэффициент оплаты за стаж
                                                      ,/*P#DOG_REF*/null      --Договор подряда
                                                      ,/*P#ACT_REF*/null      --Акт на выполненные работы
                                                      );
                  exception when OTHERS then
                     pragma error (SQLERRM);
               end;

Текст ошибки:
Код:

ORA-20300: APP-USER.HM_IMP_BONUS: ORA-02290: нарушено ограничение целостности CHECK(IBS.Z#NN_Z#DOC_NAS_USER_COL7)

ORA-06512: на  "IBS.MESSAGE", line 50

ORA-06512: на  "IBS.Z$USER_HM_IMP_BONUS", line 167

ORA-06512: на  "IBS.Z$U$491686251", line 83

ORA-06512: на  line 1

BEGIN

   $$$.Z$U$491686251.P(?,?,?);

END;


При этом если вручную вызывать эту операцию то запись добавляется без ошибок.
Можно ли в PL+ вызвать данную операцию или нет?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Апр 24, 2014 05:19    Ответить с цитатой
Полезность: Нет оценки
ORA-20300: APP-USER.HM_IMP_BONUS: ORA-02290: нарушено ограничение целостности CHECK(IBS.Z#NN_Z#DOC_NAS_USER_COL7)

Запускашь какой-н SQL Navigator , TOAD , Oracle SQL Developer короче напрямую к базе коннектишься.
Ищещь этот индекс Z#NN_Z#DOC_NAS_USER_COL7
И смотришь по какому столбцу он построен и вообще какое там условие построения.

И тут обычно приходит "озарение", что либо он не может быть пустым- массив, либо впихивается в ссылку id несущестующего экземпляра либо ещё какое-н Ограничение целостности.

У меня например индекс другой- Z#IX_Z#DOC_NAS_USER_COL7
он является УНИКАЛЬНЫМ по полю C_UDER_NAS
Sant
Участник со стажем


Вступление в Клуб: 19.08.2013
СообщениеЧт Апр 24, 2014 07:35    Ответить с цитатой
Полезность: Нет оценки
Alkov, через PL\SQL Developer смотрю содержимое табличке "Z#DOC_NAS_USER":
Код:

-- Create/Recreate check constraints
alter table Z#DOC_NAS_USER
  add constraint Z#NN_Z#DOC_NAS_USER_COL7
  check (C_UDER_NAS IS NOT NULL);
alter table Z#DOC_NAS_USER
  add constraint Z#NN_Z#DOC_NAS_USER_COL8
  check (C_OT_NAS IS NOT NULL);

Думаю эти констрейнты поставлены на уровни оракла.
Например, если посмотреть (с PL\SQL Developer) содержимое "Z#PR_CRED" то там не видно:
Код:

-- Create/Recreate check constraints
...

Ну если посмотреть через Администратор словаря данных по этой ТБП тоже есть ограничение "NOT IS NULL" по полям C_LIST_PAY, C_LIST_PLAN_PAY...
"Свойства"->вкладка "Ограничения".

Пока решил задачу так:
Код:

,/*P#UDER_NAS*/next_value('SEQ_ID')      --Удержания по начислению
,/*P#OT_NAS*/next_value('SEQ_ID')      --Отчисления по начислению


Последний раз редактировалось: Sant (Пт Апр 25, 2014 08:44), всего редактировалось 1 раз
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Апр 24, 2014 11:07    Ответить с цитатой
Полезность: Нет оценки
Хм. А что за система ? Какие-то странные индексы на Z#NN_Z...
У меня ЦФТ-Банк.
там так:
CREATE UNIQUE INDEX "IBS"."Z#IX_Z#DOC_NAS_USER_COL7" ON "IBS"."Z#DOC_NAS_USER" ("C_UDER_NAS")
PCTFREE 10 INITRANS 3 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 16384 NEXT 262144 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "I_USR" ;
Sant
Участник со стажем


Вступление в Клуб: 19.08.2013
СообщениеЧт Апр 24, 2014 11:30    Ответить с цитатой
Полезность: Нет оценки
А что за система ?
Код:

Приложения:
"ЦФТ-Банк (Таджикистан - Платформа 1)" Версия 7.7.13.1
"ЦФТ - Платформа Развития" Версия 7.3.1
------------------------------------------------------------
Присоединен к серверу WORK
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE   11.2.0.4.0   Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеЧт Апр 24, 2014 14:00    Ответить с цитатой
Полезность: Нет оценки
Sant пишет:

Пока решил задача так:
Код:

,/*P#UDER_NAS*/next_value('SEQ_ID')      --Удержания по начислению
,/*P#OT_NAS*/next_value('SEQ_ID')      --Отчисления по начислению


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

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