首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

大家帮小弟我看看这个如何错了

2012-07-23 
大家帮我看看这个怎么错了Create Or Replace Trigger Trigger_TOS_D_PATIENT_PASTAfter Insert Or Update

大家帮我看看这个怎么错了
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)
这是个啥,函数? 又操作本身依附的表了吧。

热点排行