日期:2014-05-17  浏览次数:20770 次

大家帮我看看这个怎么错了
Create Or Replace Trigger Trigger_TOS_D_PATIENT_PAST
 After Insert Or Update On TOS_D_PATIENT_PAST For Each Row

Begin
  If Inserting Then
  DECLARE RNT INT := 0;

  BEGIN
  SELECT COUNT(1) INTO rnt from tos_d_patient_info_summary t where t.patient_id = :new.patient_id;
  if(rnt>0) then
  update tos_d_patient_info_summary t 
  set 
  t.knj_kiorrk = TOS_SP_PATIENTINFOMNGDATA.FILL_KNJKIORRK(:new.patient_id) where t.patient_id = :new.patient_id;
  else 
  Insert Into tos_d_patient_info_summary(patient_id,knj_kiorrk) Values(:new.patient_id,TOS_SP_PATIENTINFOMNGDATA.FILL_KNJKIORRK(:new.patient_id));
  end if;
  END;

  Elsif Updating Then
  update tos_d_patient_info_summary T 
  set 
  T.KNJ_KIORRK=TOS_SP_PATIENTINFOMNGDATA.FILL_KNJKIORRK(:old.PATIENT_ID),
  t.knj_allergy =TOS_SP_PATIENTINFOMNGDATA.FILL_KNJALLERGY(:old.PATIENT_ID),
  t.knj_kansen =TOS_SP_PATIENTINFOMNGDATA.FILL_KNJKANSEN(:old.PATIENT_ID)
  where t.patient_id=:old.PATIENT_ID;
  End If;

End;


当我向表tos_d_patient_past插入值的时候, 提示错误,,请问怎么错了啊
如果没有触发器,是可以插入的,
报:ORA-04091 0RA-06512 ORA-06512 ORA-04088错误

------解决方案--------------------
TOS_SP_PATIENTINFOMNGDATA.FILL_KNJKIORRK(:new.patient_id)
这是个啥,函数? 又操作本身依附的表了吧。