Oracle触发器写法：
create or replace trigger TR_XT_ZLSFGX_ALL_CZRZ
 after
  insert or delete or update
 on XT_ZLSFGX
referencing old as old new as new
 for each row
declare
-- MODifICATION HISTORY
-- Person      Date        Comments
-- qks         2017.09.15  收费项目无法停用问题; for XMGL9-20170916-001
-- qks         2018.03.06  无法停用部分收费项目; for XMGL9-20180306-001
-- guanzj      2018.04.03  增加VS_XMMC00的长度;  for XMGL9-20180327-001
-- chenHeyi    2023.06.12  修改日志增加 加收限制，拆分诊疗项目ID，拆分系统    XMGL9-20230608-002
  VS_PROCESS XT_XTRZ00.JCID00%Type;
  VS_YGBH00 XT_XTRZ00.YGBH00%Type;
  VS_CZNR00 XT_XTCZRZ.CZNR00%Type;
  VS_XMMC00 varchar2(1000);
begin
    Select userenv('SESSIONID') PROCESS Into VS_PROCESS from dual where rownum=1;
    Select nvl(max(YGBH00),0) Into VS_YGBH00 From XT_XTRZ00 Where JCID00=VS_PROCESS And
           LSH000=(select max(LSH000) from XT_XTRZ00 where JCID00=VS_PROCESS);
  if inserting then  --插入
      VS_CZNR00:=VS_CZNR00||'序列号:'||to_char(:NEW.GXID00)||';';
      VS_CZNR00:=VS_CZNR00||'诊疗项目ID:'||to_char(:NEW.ZLXMID)||';';
      VS_CZNR00:=VS_CZNR00||'收费项目ID:'||to_char(:NEW.SFXMID)||';';
      Insert Into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00,DATAID)
                     Values(SQ_XT_XTCZRZ_ID0000.NEXTVAL,'XT_ZLSFGX',0,VS_YGBH00,'(增加)'||VS_CZNR00,:NEW.GXID00);
  ELSif deleting then  --删除
      VS_CZNR00:=VS_CZNR00||'序列号:'||to_char(:OLD.GXID00)||';';
      VS_CZNR00:=VS_CZNR00||'诊疗项目ID:'||to_char(:OLD.ZLXMID)||';';
      VS_CZNR00:=VS_CZNR00||'收费项目ID:'||to_char(:OLD.SFXMID)||';';
      VS_CZNR00:=VS_CZNR00||'收费次数:'||to_char(:OLD.SFCS00)||';';
      Insert Into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00,DATAID)
                     Values(SQ_XT_XTCZRZ_ID0000.NEXTVAL,'XT_ZLSFGX',2,VS_YGBH00,'(删除)'||VS_CZNR00,:OLD.GXID00);
  ELSif updating then  --修改
      select nvl(max(trim(ZLXMJC)),'无') Into VS_XMMC00 From BM_ZLZD00 Where ZLXMID=:old.ZLXMID ;
      VS_CZNR00:='(修改:'||VS_XMMC00;
      VS_XMMC00 := '收费项目ID:'||to_char(:OLD.SFXMID);
      --2018.03.06
      --if (nvl(trim(:NEW.TYBZ00),'无') = nvl(trim(:OLD.TYBZ00),'无')) and
      --  (nvl(trim(:NEW.BZ0000),'无') = nvl(trim(:OLD.BZ0000),'无')) then  --收费项目停用引起的
      --  select substrb(VS_XMMC00||nvl(max(trim(XMMC00||decode(BZ0000,null,'','['||BZ0000||']'))),'无'),1,300) Into VS_XMMC00 From BM_YYSFXM Where SFXMID=:old.SFXMID ;
      --end if;
      VS_CZNR00:=VS_CZNR00||'-'||VS_XMMC00||')';

       if nvl(:old.SFXMID,0)<>nvl(:new.SFXMID,0) then
          Select nvl(max(trim(XMMC00||decode(BZ0000,null,'','['||BZ0000||']'))),'无') Into VS_XMMC00 From BM_YYSFXM Where SFXMID=:old.SFXMID ;
          VS_CZNR00 := VS_CZNR00||'收费项目:'||VS_XMMC00;
          Select nvl(max(trim(XMMC00||decode(BZ0000,null,'','['||BZ0000||']'))),'无') Into VS_XMMC00 From BM_YYSFXM Where SFXMID=:new.SFXMID ;
          VS_CZNR00 := VS_CZNR00||'->'||VS_XMMC00||';';
       end if;
       if (nvl(:NEW.SFCS00,0) <> nvl(:OLD.SFCS00,0)) Then
          VS_CZNR00 := VS_CZNR00||'收费次数:'||nvl(:OLD.SFCS00,0)||'->'||nvl(:NEW.SFCS00,0)||';';
       end if;
       if (nvl(trim(:NEW.FJFYBZ),'无') <> nvl(trim(:OLD.FJFYBZ),'无')) Then
          VS_CZNR00 := VS_CZNR00||'附加费用标志:'||nvl(trim(:OLD.FJFYBZ),'无')||'->'||nvl(trim(:NEW.FJFYBZ),'无')||';';
       end if;
       if (nvl(trim(:NEW.BQSFBZ),'无') <> nvl(trim(:OLD.BQSFBZ),'无')) Then
          VS_CZNR00 := VS_CZNR00||'病区收入标志:'||nvl(trim(:OLD.BQSFBZ),'无')||'->'||nvl(trim(:NEW.BQSFBZ),'无')||';';
       end if;
       if (nvl(trim(:NEW.GDBZ00),'无') <> nvl(trim(:OLD.GDBZ00),'无')) Then
          VS_CZNR00 := VS_CZNR00||'固定收费项目标志(主项):'||nvl(trim(:OLD.GDBZ00),'无')||'->'||nvl(trim(:NEW.GDBZ00),'无')||';';
       end if;
       if (nvl(trim(:NEW.MZZYBZ),'无') <> nvl(trim(:OLD.MZZYBZ),'无')) Then
          VS_CZNR00 := VS_CZNR00||'门诊住院标志:'||nvl(trim(:OLD.MZZYBZ),'无')||'->'||nvl(trim(:NEW.MZZYBZ),'无')||';';
       end if;
       if (nvl(trim(:NEW.MXXMID),0) <> nvl(trim(:OLD.MXXMID),0)) Then
         VS_CZNR00 := VS_CZNR00||'组合明细项目:'||nvl(trim(:OLD.MXXMID),0)||'->'||nvl(trim(:NEW.MXXMID),0)||';';
       end if;
       if (nvl(trim(:NEW.TYBZ00),'无') <> nvl(trim(:OLD.TYBZ00),'无')) Then
          VS_CZNR00 := VS_CZNR00||'停用标志:'||nvl(trim(:OLD.TYBZ00),'无')||'->'||nvl(trim(:NEW.TYBZ00),'无')||';';
       end if;
       if (nvl(trim(:NEW.SFLB00),'无') <> nvl(trim(:OLD.SFLB00),'无')) Then
          VS_CZNR00 := VS_CZNR00||'收费类别:'||nvl(trim(:OLD.SFLB00),'无')||'->'||nvl(trim(:NEW.SFLB00),'无')||';';
       end if;
       if (nvl(:NEW.YJE000,0)<> nvl(:OLD.YJE000,0)) Then
          VS_CZNR00 := VS_CZNR00||'原金额:'||TO_CHAR(nvl(:OLD.YJE000,0))||'->'||TO_CHAR(nvl(:NEW.YJE000,0))||';';
       end if;
       if (nvl(:NEW.TCJE00,0)<> nvl(:OLD.TCJE00,0)) Then
          VS_CZNR00 := VS_CZNR00||'套餐金额:'||TO_CHAR(nvl(:OLD.TCJE00,0))||'->'||TO_CHAR(nvl(:NEW.TCJE00,0))||';';
       end if;
       
       If (nvl(trim(:NEW.JSXZ00),'0') <> nvl(trim(:OLD.JSXZ00),'0')) Then
          VS_CZNR00 := VS_CZNR00||'加收限制:'||nvl(trim(:OLD.JSXZ00),'0')||'->'||nvl(trim(:NEW.JSXZ00),'0')||';';
       End If;

           
       Insert Into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00,DATAID)
                          Values(SQ_XT_XTCZRZ_ID0000.NEXTVAL,'XT_ZLSFGX',1,VS_YGBH00,VS_CZNR00,:NEW.GXID00);
  end if;
end;
/


修改以后：
create or replace trigger TR_XT_ZLSFGX_ALL_CZRZ
 after
  insert or delete or update
 on XT_ZLSFGX
 referencing old as old new as new
 for each row  -- 调整位置，且删除冗余的referencing子句
declare
-- MODifICATION HISTORY
-- Person      Date        Comments
-- qks         2017.09.15  收费项目无法停用问题; for XMGL9-20170916-001
-- qks         2018.03.06  无法停用部分收费项目; for XMGL9-20180306-001
-- guanzj      2018.04.03  增加VS_XMMC00的长度;  for XMGL9-20180327-001
-- chenHeyi    2023.06.12  修改日志增加 加收限制，拆分诊疗项目ID，拆分系统    XMGL9-20230608-002
  VS_PROCESS XT_XTRZ00.JCID00%Type;
  VS_YGBH00 XT_XTRZ00.YGBH00%Type;
  VS_CZNR00 XT_XTCZRZ.CZNR00%Type;
  VS_XMMC00 varchar2(1000);
begin
    -- 替换userenv为SYS_CONTEXT，兼容两数据库
    Select SYS_CONTEXT('USERENV','SESSIONID') PROCESS Into VS_PROCESS from dual where rownum=1;
    Select nvl(max(YGBH00),0) Into VS_YGBH00 From XT_XTRZ00 Where JCID00=VS_PROCESS And
           LSH000=(select max(LSH000) from XT_XTRZ00 where JCID00=VS_PROCESS);
  if inserting then  --插入
      VS_CZNR00:=VS_CZNR00||'序列号:'||to_char(:NEW.GXID00)||';';
      VS_CZNR00:=VS_CZNR00||'诊疗项目ID:'||to_char(:NEW.ZLXMID)||';';
      VS_CZNR00:=VS_CZNR00||'收费项目ID:'||to_char(:NEW.SFXMID)||';';
      Insert Into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00,DATAID)
                     Values(SQ_XT_XTCZRZ_ID0000.NEXTVAL,'XT_ZLSFGX',0,VS_YGBH00,'(增加)'||VS_CZNR00,:NEW.GXID00);
  ELSif deleting then  --删除
      VS_CZNR00:=VS_CZNR00||'序列号:'||to_char(:OLD.GXID00)||';';
      VS_CZNR00:=VS_CZNR00||'诊疗项目ID:'||to_char(:OLD.ZLXMID)||';';
      VS_CZNR00:=VS_CZNR00||'收费项目ID:'||to_char(:OLD.SFXMID)||';';
      VS_CZNR00:=VS_CZNR00||'收费次数:'||to_char(:OLD.SFCS00)||';';
      Insert Into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00,DATAID)
                     Values(SQ_XT_XTCZRZ_ID0000.NEXTVAL,'XT_ZLSFGX',2,VS_YGBH00,'(删除)'||VS_CZNR00,:OLD.GXID00);
  ELSif updating then  --修改
      select nvl(max(trim(ZLXMJC)),'无') Into VS_XMMC00 From BM_ZLZD00 Where ZLXMID=:old.ZLXMID ;
      VS_CZNR00:='(修改:'||VS_XMMC00;
      VS_XMMC00 := '收费项目ID:'||to_char(:OLD.SFXMID);

       if nvl(:old.SFXMID,0)<>nvl(:new.SFXMID,0) then
          Select nvl(max(trim(XMMC00||decode(BZ0000,null,'','['||BZ0000||']'))),'无') Into VS_XMMC00 From BM_YYSFXM Where SFXMID=:old.SFXMID ;
          VS_CZNR00 := VS_CZNR00||'收费项目:'||VS_XMMC00;
          Select nvl(max(trim(XMMC00||decode(BZ0000,null,'','['||BZ0000||']'))),'无') Into VS_XMMC00 From BM_YYSFXM Where SFXMID=:new.SFXMID ;
          VS_CZNR00 := VS_CZNR00||'->'||VS_XMMC00||';';
       end if;
       if (nvl(:NEW.SFCS00,0) <> nvl(:OLD.SFCS00,0)) Then
          VS_CZNR00 := VS_CZNR00||'收费次数:'||nvl(:OLD.SFCS00,0)||'->'||nvl(:NEW.SFCS00,0)||';';
       end if;
       if (nvl(trim(:NEW.FJFYBZ),'无') <> nvl(trim(:OLD.FJFYBZ),'无')) Then
          VS_CZNR00 := VS_CZNR00||'附加费用标志:'||nvl(trim(:OLD.FJFYBZ),'无')||'->'||nvl(trim(:NEW.FJFYBZ),'无')||';';
       end if;
       if (nvl(trim(:NEW.BQSFBZ),'无') <> nvl(trim(:OLD.BQSFBZ),'无')) Then
          VS_CZNR00 := VS_CZNR00||'病区收入标志:'||nvl(trim(:OLD.BQSFBZ),'无')||'->'||nvl(trim(:NEW.BQSFBZ),'无')||';';
       end if;
       if (nvl(trim(:NEW.GDBZ00),'无') <> nvl(trim(:OLD.GDBZ00),'无')) Then
          VS_CZNR00 := VS_CZNR00||'固定收费项目标志(主项):'||nvl(trim(:OLD.GDBZ00),'无')||'->'||nvl(trim(:NEW.GDBZ00),'无')||';';
       end if;
       if (nvl(trim(:NEW.MZZYBZ),'无') <> nvl(trim(:OLD.MZZYBZ),'无')) Then
          VS_CZNR00 := VS_CZNR00||'门诊住院标志:'||nvl(trim(:OLD.MZZYBZ),'无')||'->'||nvl(trim(:NEW.MZZYBZ),'无')||';';
       end if;
       if (nvl(trim(:NEW.MXXMID),0) <> nvl(trim(:OLD.MXXMID),0)) Then
         VS_CZNR00 := VS_CZNR00||'组合明细项目:'||nvl(trim(:OLD.MXXMID),0)||'->'||nvl(trim(:NEW.MXXMID),0)||';';
       end if;
       if (nvl(trim(:NEW.TYBZ00),'无') <> nvl(trim(:OLD.TYBZ00),'无')) Then
          VS_CZNR00 := VS_CZNR00||'停用标志:'||nvl(trim(:OLD.TYBZ00),'无')||'->'||nvl(trim(:NEW.TYBZ00),'无')||';';
       end if;
       if (nvl(trim(:NEW.SFLB00),'无') <> nvl(trim(:OLD.SFLB00),'无')) Then
          VS_CZNR00 := VS_CZNR00||'收费类别:'||nvl(trim(:OLD.SFLB00),'无')||'->'||nvl(trim(:NEW.SFLB00),'无')||';';
       end if;
       if (nvl(:NEW.YJE000,0)<> nvl(:OLD.YJE000,0)) Then
          VS_CZNR00 := VS_CZNR00||'原金额:'||TO_CHAR(nvl(:OLD.YJE000,0))||'->'||TO_CHAR(nvl(:NEW.YJE000,0))||';';
       end if;
       if (nvl(:NEW.TCJE00,0)<> nvl(:OLD.TCJE00,0)) Then
          VS_CZNR00 := VS_CZNR00||'套餐金额:'||TO_CHAR(nvl(:OLD.TCJE00,0))||'->'||TO_CHAR(nvl(:NEW.TCJE00,0))||';';
       end if;
       
       If (nvl(trim(:NEW.JSXZ00),'0') <> nvl(trim(:OLD.JSXZ00),'0')) Then
          VS_CZNR00 := VS_CZNR00||'加收限制:'||nvl(trim(:OLD.JSXZ00),'0')||'->'||nvl(trim(:NEW.JSXZ00),'0')||';';
       End If;
           
       Insert Into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00,DATAID)
                          Values(SQ_XT_XTCZRZ_ID0000.NEXTVAL,'XT_ZLSFGX',1,VS_YGBH00,VS_CZNR00,:NEW.GXID00);
  end if;
end;
/



1、删除冗余的referencing子句
原代码中referencing new as new old as old要改成referencing old as old new as new

2、会话 ID 函数兼容
将userenv('SESSIONID')替换为SYS_CONTEXT('USERENV','SESSIONID')，该函数在 Oracle 和达梦中均有效，功能完全一致。