有inert、update、delete权限,但是没有MERGE INTO权限MERGE INTO DIAGNOSIS@tohis p
USING emr_diagnosis np
ON (p.PATIENT_ID = np.PATIENT_ID and p.VISIT_ID = np.VISIT_ID and p.DIAGNOSIS_TYPE = np.DIAGNOSIS_TYPE and p.DIAGNOSIS_NO = np.DIAGNOSIS_NO)
WHEN NOT MATCHED THEN
  INSERT
  VALUES
    (np.PATIENT_ID,
     np.VISIT_ID,
     np.DIAGNOSIS_TYPE,
     np.DIAGNOSIS_NO,
     np.DIAGNOSIS_DESC,
     np.DIAGNOSIS_DATE,
     np.TREAT_DAYS,
     np.TREAT_RESULT,
     np.OPER_TREAT_INDICATOR,
     np.DIAGNOSIS_CODE,
     np.INSERT_INDICATOR,
     np.ADMISSION_CONDITION,
     np.DIAGNOSIS_CODE2) 
   WHERE np.patient_id = '0106853' 
     and np.visit_id = '1' 
     and replace(replace(np.DIAGNOSIS_DESC, '—', ''), '-', '') is not null
WHEN MATCHED THEN
  UPDATE
     SET p.DIAGNOSIS_DESC      = np.DIAGNOSIS_DESC,
         p.DIAGNOSIS_DATE      = np.DIAGNOSIS_DATE,
         p.TREAT_RESULT        = np.TREAT_RESULT,
         p.DIAGNOSIS_CODE      = np.DIAGNOSIS_CODE,
         p.ADMISSION_CONDITION = np.ADMISSION_CONDITION
   WHERE np.patient_id = '0106853'
     and np.visit_id = '1'
     and replace(replace(np.DIAGNOSIS_DESC, '—', ''), '-', '') is not null;这个语句执行失败 
ora-01031:insufficient privileges
ora-02063:紧接着line(起自TOHIS)

解决方案 »

  1.   

     DIAGNOSIS@tohis这个远程对象,你可以插入、修改数据吗 ?
      

  2.   


    可以的,我在同一个用户下面可以  insert into  DIAGNOSIS@tohis,delete from  DIAGNOSIS@tohis,update  DIAGNOSIS@tohis
      

  3.   

    我记得啊,不是很清楚了,在oracle9.2里面是有这个问题的。楼主是哪个版本的库。
      

  4.   

    oralce 11G
      

  5.   

    如果存在就更新,不存在就插入
    9i已经支持了,但是只支持select子查询,
    如果是单条数据记录,可以写作select …… from dual的子查询。但是merge不允许更新on条件里面的列的值,否则会报ORA-38104错误。