Вызов операцию конструктора в PL+
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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') --Отчисления по начислению
|
|
Если у конструктора в качестве входных параметров выступают массивы, то это единственно возможный вариант. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|