PROCEDURE SP_YJ_YJSQWH -- MODifICATION HisTORY -- Person Date Comments -- qks 2015.07.17 手术室录入的医技单对应的开单科室编号,应该为手术医生对应医生组所在科室;麻醉科录入的申请科室还是属于麻醉科 -- qks 2015.03.10 新增入参 -- qks 2014.03.06 三级库存耗材管理改造:生成住院试管费附加费,YJ_YW0000.YZCFID值没写入,也要写入; -- qks 2014.12.26 XK_SXSQ00.BQMC00值写入 -- qks 2014.08.18 借床病人 执行收入归被借床所属住院科室;出院登记状态不允许开单; -- qks 2014.06.10 如果手术单已登记,那么手术对应医技单最少要保留一个,不允许删除,只允许手术撤消操作; -- qks 2014.02.27 住院检验项目收“一次性采血管”费用:条码已生成情况下,不允许并管; -- qks 2014.01.24 根据BM_ZLZD00.JYTZBH自动合并收取“一次性采血管”费用:门诊按未收费,住院按未执行合并;门诊和住院急诊单据不合并; -- qks 2014.01.22 修改:取未执行的附加费数量,同时判断表HIS_REQUISITION状态 -- qks 2014.01.15 修改:取未执行的附加费数量 -- lintj 2014.01.09 附加费产生按照JZBZ00区分 -- lintj 2013.12.18 修改附加费的生成方法 SFQR00 -- lintj 2013.09.25 修改试管费只计一个的BUG -- qks 2013.09.07 科室耗材退预扣处理SP_KS_HCJJCX -- qks 2013.08.19 考虑转区未接收情况:取转区前科室 -- qks 2013.08.08 增加入参Pssdh00:手术室开单,住院Vdqks00取手术单对应的申请科室; -- lintj 2013.07.17 加 Vyszid0 -- lintj 2013.07.16 加 Vkdksbh -- lintj 2013.07.12 写 DQKS00 -- lintj 2013.06.24 加 SP_YJ_YjComverToYz -- lintj 2013.05.28 住院非本人或本科室开单的允许删除 -- lintj 2013.05.24 病区的抽血费执行科室改到病区 -- lintj 2013.03.25 加 Pyzcfid -- lintj 2012.11.05 modify: XT_BBDCZL改成XT_ZLDCZL -- lintj 2012.09.01 modify: 血库子单不能产生新的输血申请单 -- JXQ 2012.09.19 Add: 不能删除非本人新增的记录 -- lintj 2012.09.01 modify: 增加附加单据的情况 -- lintj 2012.08.08 create -- yangy 2012.09.27 传入诊断ID没有效果,如果没有诊断不需要自动补诊断 -- jlg 2012.10.10 SS_YW0000.SSZT00由原来的'6'改为'0' -- zhangwz 2012.10.23 因为程序里面的 YJ_YW0000.LRY000 数据基本为null,导致删除的限制没有起作用,增加判断 YJ_YW0000.KDKSBH<>Pczyks0 时不让删除 -- zhangwz 2012.10.31 更改对于输血类单据进行 update YJ_YW0000.XMZT00='0' 而导致执行时报项目没有定价的错误,更改为 update YJ_YW0000.XMZT00='1'. -- xuzw 2016.01.19 区分带出的诊疗项目是门诊还是住院 YJ9-20160119-001 -- zhaoxz 2016.01.29 新增Pwzbm00,Pssbm00,Pssmc00,Pssyjdh,Pwzbh00,Ptqpc00 入参,脚本交叉整理 MZYS9-20160129-001 -- qks 2016.08.12 省人民医院:麻醉科要求门诊病人增加麻醉医技费用,要求所选择的挂号记录是有效挂号才允许增加。by SSMZ9-20160812-001 -- qks 2016.09.19 北京优翔生命院:套餐改造需求,新增入参Pyjzhje。for YJ9-20160921-001 -- zhaoxz 2016.09.23 北京优翔生命院,整理冲突脚本Pxmzk00,增加入参Ptcid00,Pmbmxid for MZYS9-20160824-002 -- zhengzk 2016.12.26 增加参数YJ_KDKSSFSQKS控制由医技科室直接开单时门诊病人保存的开单科室 for YJ9-20161213-001 -- qks 2017.01.01 增加参数控制检验项目数量是否允许大于1; for YJ9-20170101-001 -- zhangyc 2017.01.14 增加入参PSFTJ00是否体检 N:否 Y:是 MZSF9-20170106-003 -- qks 2017.03.04 可以根据年龄和性别进行开单限制; for XMGL9-20170217-001 -- qks 2017.06.15 要求出院登记病人代煎费也能开单; for YF9-20170615-002 -- qks 2017.07.04 省人民:出现个别病人抽血费漏收问题; for YJ9-20170705-001 -- qks 2017.08.24 YJ_YW0000.YEXM00字段值写入婴儿姓名; for YJ9-20170824-001 -- ruanbh 2017.09.12 福州福清市医院新院:项目开单科室限制 for MZYS9-20170908-002 ( Popflag in number , --操作内容 1修改 2增加 3删除 Pyjdjh0 in out number , --操作的医技单据号 Pzyghid in number , --住院挂号ID Pmzzybz in varchar2 , --门诊住院标志 Pzlxmid in number , --诊疗项目id Pzxmid0 in varchar2 , --子项目id串,如果没有传入参数,表示使用所有明细项 pzdid00 in varchar2 , --诊断id pzdmc00 in varchar2 , --诊断名称 Pbbid00 in varchar2 , --标本ID Pbh0000 in varchar2 , --特殊病种编号 Pyjlrbz in varchar2 , --医技录入标志 Pjzbz00 in varchar2 , --急诊标志 Pkdys00 in number , --开单医生 Pkdksbh in number , --开单科室编号 Pkdbq00 in number , --开单病区 Pyjksbh in number , --医技科室编号 Psl0000 in number , --数量 Pbz0000 in varchar2 , --备注 Pfjdjbz in char , --附加单据 0主单1采血费2试管费3挂号费4诊查费5病历本6预约挂号7代煎9其他子单 Pczy000 in number , --操作员 Pczyks0 in number , --操作员科室 Pcommit in varchar2 default 'N' , --是否提交 Pzxcgbz out number , --执行成功标志 1成功 0失败 Ptsxx00 out varchar2 , --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 out varchar2 , --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Pywmxid in number default null , --业务明细ID Popflag=3时 可能用到 Pbwmc00 in varchar2 default null, --部位名称 Pfyjdjh in number default null , --父医技单据号 Pcxjj00 in number default 1 , --重新计价 Pyzcfid in varchar2 default null, --医嘱处方ID Pssdh00 in varchar2 default null, --手术单号 Ptxm000 in varchar2 default null, --条形码 Pwzbm00 in varchar2 default null, --物资编码 Pssbm00 in varchar2 default null, --手术编码 Pssmc00 in varchar2 default null, --手术名称 Pssyjdh in varchar2 default null, --手术医技单据号 Pwzbh00 in varchar2 default null, --物资备货 Ptqpc00 in number default 0, --提取批次 Pxmzk00 in number default 1, --项目折扣(基数) Pyjzhje in number default 0, --医技折后金额 Ptcid00 in number default null, --套餐ID Pmbmxid in number default null, --模板明细ID PSFTJ00 in varchar2 default 'N', --是否体检 N:否 Y:是 PSFZF00 in varchar2 default 'N', PYYGXJG in varchar2 default 'N' ) AS Vczrq00 char(8); Vczsj00 char(8); Vdelall boolean; Vyjdsx0 number(1); Vzlxmjc BM_ZLZD00.ZLXMJC%type; --诊疗项目简称 Vlbbh00 BM_ZLZD00.LBBH00%type; Vdw0000 BM_ZLZD00.DW0000%type; Vfbzxbz BM_ZLZD00.FBZXBZ%type; Vzyhghh ZY_BRXXB0.ZYH000%type; Vbrxm00 ZY_BRXXB0.XM0000%type; Vxb0000 ZY_BRXXB0.XB0000%type; Vcsrq00 ZY_BRXXB0.CSRQ00%type; Vch0000 ZY_BRXXB0.RYCWH0%type; Vkdbq00 ZY_BRXXB0.DQBQ00%type; Vbrzt00 ZY_BRXXB0.BRZT00%type; Vzyid00 ZY_BRXXB0.ZYID00%type; Vzldccf YJ_YW0000.ZLDCCF%type; Vzdmc00 YJ_YW0000.ZDMC00%type; Vsqid00 YJ_YW0000.SQID00%type; Vmc0000 BM_TSBZB0.MC0000%type; --名称变量 Vczyxm0 BM_YGBM00.ZWXM00%type; --操作员姓名 Vkdysxm BM_YGBM00.ZWXM00%type; Vysszks BM_YGBM00.BMBH00%type; Vybzxlb BM_TSBZB0.YBZXLB%type; --医保执行类别 Vbrid00 BM_BRXXB0.BRID00%type; Vyblb00 BM_BRXXB0.YBLB00%type; --医保类别 Vfbbh00 BM_BRXXB0.FBBH00%type; --费别编号 Vxmsqd0 XT_XTCS00.VALUE0%type; --是否启用医生站的项目申请单 Y:是 N否 默认为N Vcfsfmr XT_XTCS00.VALUE0%type; Vzxmid0 varchar2(255); --子项目id Vyw0000 YJ_YW0000%rowtype; --医技单 Vyjdjh0 YJ_YW0000.YJDJH0%type; --安排日期,检验系统一次开多天的检验单,预计的检验日期 Vzdid00 YJ_YW0000.ZDID00%type; Vssdh00 SS_YW0000.SSDH00%type; Vssdh01 SS_YW0000.SSDH00%type; Vssxh00 SS_YW0000.SSXH00%type; Vsqdh00 XK_SXSQ00.SQDH00%type; Vxkbmbh BM_BMBM00.BMBH00%type; Vsxcf00 XK_SXSQ00.SXCF00%type; Vsxsz00 XK_SXSQ00.SXSZ00%type; Vyjksbh YJ_YW0000.YJKSBH%type; Vdqks00 YJ_YW0000.DQKS00%type; Vkdksbh YJ_YW0000.DQKS00%type; Vyszid0 YJ_YW0000.YSZID0%type; Vsqks00 SS_YW0000.SQKS00%type; VLDLSH0 BQ_BRLDXX.LDLSH0%type; VJYTZBH BM_ZLZD00.JYTZBH%type; VZYJDJH YJ_YJDJGL.ZYJDJH%type; VJCKSBH ZY_BRXXB0.DQKS00%type; --借床 所属科室编号 VBQMC00 BM_BMBM00.BMMC00%type; VXBBZ00 BM_ZLZD00.XBBZ00%type; VNLXZ00 BM_ZLZD00.NLXZ00%type; VYEXM00 BQ_YJYZ00.YEXM00%type; Vsl0000 number; Vcs0000 number; Vsysdate date; --日期变量 Vcounter number(10); --计数器变量 Vjyxmsl number(5); --检验项目数量允许最大值 VBRNL00 NUMBER(5); --患者年龄 Ecustom exception; --错误变量 Vyj_scfxmsfzdsczxm char(1); V_MZBLXZSFYS varchar2(250); --门诊病历限制收费医生 cursor Cjydcxm is select DCXMID ZLXMID,FJDJBZ,SL0000,CJFS00,DCLX00,0 FLAG00,NVL(MZZYBZ,'2') MZZYBZ from XT_ZLDCZL where ZLXMID=Pzlxmid --XT_BBDCZL union select b.ZLXMID,'2' FJDJBZ,1 SL0000,'0' CJFS00,'1' DCLX00,1 FLAG00,'4' MZZYBZ from JY_TXMDY0 a,JY_TXMLB0 b where a.TXMQZ0=b.TXMQZ0 and a.ZLXMID=Pzlxmid and b.zlxmid is not null and not exists( select 1 from YJ_YJDJGL t1, YJ_YW0000 t2, YJ_YW0000 t3, JY_TXMDY0 t4 where t2.ZYGHID=Pzyghid and t2.MZZYBZ=Pmzzybz and t2.FJDJBZ='2' and t1.ZYJDJH=t2.YJDJH0 and t1.SCX000='0' and t1.FYJDJH=t3.YJDJH0 and t3.XMZT00 not in ('2','3') and t3.ZLXMID=t4.ZLXMID and t4.TXMQZ0=a.TXMQZ0 ); cursor Cjyzxm0 is select ZXMID0 from VW_YS_YWMXXM where SJXMID=Pzlxmid and GDXMBZ='Y' ; cursor CUR_ZYJDJH is select b.YJDJH0 from YJ_YJDJGL a,YJ_YW0000 b where FYJDJH = Pyjdjh0 and a.ZYJDJH=b.YJDJH0 and a.SCX000='0' and b.XMZT00 not in ('2','3','4'); --2017.07.04 --and not exists (select 1 from YJ_YJDJGL where FYJDJH<>Pyjdjh0 and ZYJDJH=a.ZYJDJH and SCX000='0'); begin Pzxcgbz := 0; Vsysdate := sysdate; Vczrq00 := to_char(sysdate,'yyyymmdd'); Vczsj00 := to_char(sysdate,'hh24:mi:ss'); Pxxxx00 :=nvl(to_char(Popflag),'null')||','||nvl(to_char(Pyjdjh0),'null')||','||nvl(to_char(Pzyghid),'null')||','|| nvl(to_char(Pmzzybz),'null')||','||nvl(to_char(Pzlxmid),'null')||','||nvl(to_char(Pzxmid0),'null')||','|| nvl(to_char(pzdid00),'null')||','||nvl(to_char(pzdmc00),'null')||','||nvl(to_char(Pbbid00),'null')||','|| nvl(to_char(Pbh0000),'null')||','||nvl(to_char(Pyjlrbz),'null')||','||nvl(to_char(Pjzbz00),'null')||','|| nvl(to_char(Pkdys00),'null')||','||nvl(to_char(Pkdksbh),'null')||','||nvl(to_char(Pkdbq00),'null')||','|| nvl(to_char(Pyjksbh),'null')||','||nvl(to_char(Psl0000),'null')||','||nvl(to_char(Pbz0000),'null')||','|| nvl(to_char(Pfjdjbz),'null')||','||nvl(to_char(Pczy000),'null')||','||nvl(to_char(Pczyks0),'null')||','||nvl(to_char(Pcommit),'null'); SP_TransLog(Vsysdate,'SP_YJ_YJSQWH',Pczy000,Pczyks0,Pxxxx00); --门诊病历限制收费 select nvl(max(trim(value0)),'0') into V_MZBLXZSFYS from XT_XTCS00 where trim(NAME00)='YS_MZBLXZSFYS'; if (Pmzzybz = '0') and (V_MZBLXZSFYS <> '0') then Vcounter := instr(','||V_MZBLXZSFYS||',',','||to_char( Pkdys00)||','); if Vcounter>0 then select count(zlxmid) into Vcounter from bm_zlzd00 where zlxmid = Pzlxmid and lbbh00 in (20,21); if Vcounter = 0 then select count(wsid00) into Vcounter from ys_mzblws where ghh000=rpad(to_char(Pzyghid),12) and wszt00<>'3'; if Vcounter = 0 then Ptsxx00 := '请先书写该病人的病历!'; Raise Ecustom; end if; end if; end if; end if; --#1.1 begin if pOpflag='3' or pOpflag='1' then --合法性判定 select * into Vyw0000 from YJ_YW0000 where YJDJH0=Pyjdjh0; if pOpflag='1' and Vyw0000.FJDJBZ in ('1','2') then Pzxcgbz := 1; return; end if; if Vyw0000.XMZT00='2' then Ptsxx00 :='该单据已经收费,不能操作'; Raise Ecustom; elsif Vyw0000.XMZT00='3' or Vyw0000.XMZT00='4' then Ptsxx00:='该单据已经执行,不能操作'; Raise Ecustom; end if; if (pOpflag = 3) and (Vyw0000.LRY000 <> Pczy000) and Vyw0000.MZZYBZ='0' then Ptsxx00 := '非本人新增业务不能删除'; Raise Ecustom; end if; if (pOpflag = 3) and (Vyw0000.FJDJBZ='0') and (Vyw0000.KDKSBH <> Pczyks0) and (Pczyks0 is not null) and (Vyw0000.YJLRBZ='N') and Vyw0000.MZZYBZ='0' then Ptsxx00 := '非本科室新增业务不能删除'; Raise Ecustom; end if; Vdelall := true; if Pywmxid is not null then select count(*) into Vcounter from YJ_YWMX00 where YJDJH0=(select YJDJH0 from YJ_YWMX00 where ID0000=Pywmxid); if Vcounter > 1 then Vdelall := false; end if; end if; select nvl(max(trim(value0)),'Y') into Vyj_scfxmsfzdsczxm from XT_XTCS00 where NAME00='YJ_SCFXMSFZDSCZXM'; --1.1.1 begin if Vdelall then if Vyw0000.FJDJBZ = '0' then --主项 if Vyj_scfxmsfzdsczxm <> 'N' then for row in CUR_ZYJDJH loop select count(*) into Vcounter from YJ_YJDJGL where ZYJDJH = row.YJDJH0 and SCX000='0' and not exists (select 1 from YJ_YJDJGL where ZYJDJH = row.YJDJH0 and FYJDJH<>Pyjdjh0 and SCX000='0'); if Vcounter > 0 then SP_YJ_YJSQWH( 3, --操作内容 1修改 2增加 3删除 row.YJDJH0, --操作的医技单据号 null, --挂号id null, --门诊住院标志 null, --诊疗项目id null, --子项目id串,如果没有传入参数,表示使用所有明细项 null, --诊断id null, --诊断名称 null, --标本ID null, --特殊病种编号 null, --医技录入标志 null, --急诊标志 null, --开单医生 null, --开单科室编号 null, --开单病区 null, --医技科室编号 null, --数量 null, --备注 null, Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); --delete from YJ_YJDJGL where ZYJDJH = row.YJDJH0 and SCX000='0'; --2017.07.04 end if; delete from YJ_YJDJGL where ZYJDJH = row.YJDJH0 and SCX000='0' and FYJDJH=Pyjdjh0; end loop; end if; else --附加项 delete from YJ_YJDJGL where ZYJDJH = Pyjdjh0; end if; Vyjdsx0 := SF_YJ_JudgeYJDSX(Pyjdjh0); if Vyjdsx0 = 0 then select nvl(max(SSDH00),0) into Vssdh00 from SS_SSYJD0 where YJDJH0=Pyjdjh0; if Vssdh00 <> 0 then --delete SS_SSYJD0 where SSDH00=Vssdh00 and YJDJH0=Pyjdjh0; --delete SS_YWMX00 where SSDH00=Vssdh00 and SSBH00=Pzlxmid; select count(1) into Vcounter from SS_YW0000 where SSDH00=Vssdh00 and SSZT00 in ('2','4'); if Vcounter>0 then select count(1) into Vcounter from SS_SSYJD0 where SSDH00=Vssdh00 and YJDJH0<>Pyjdjh0 and SSMZBZ='0'; if Vcounter>0 then delete SS_SSYJD0 where SSDH00=Vssdh00 and YJDJH0=Pyjdjh0; delete SS_YWMX00 where SSDH00=Vssdh00 and SSBH00=Pzlxmid; end if; else delete SS_SSYJD0 where SSDH00=Vssdh00 and YJDJH0=Pyjdjh0; delete SS_YWMX00 where SSDH00=Vssdh00 and SSBH00=Pzlxmid; end if; end if; end if; if Vyjdsx0 = 1 then delete from JY_YW0000 where YJDJH0=Pyjdjh0; end if; if Vyjdsx0 = 2 then select nvl(max(SQDH00),0) into Vsqdh00 from XK_SXSQ00 where BRID00=Vyw0000.BRID00 and YZMXID=Pyjdjh0; delete from XK_SXSQ00 where BRID00=Vyw0000.BRID00 and YZMXID=Pyjdjh0; end if; if Popflag = 3 or (Popflag = 1 and Pcxjj00=1) then SP_KS_HCJJCX(Pyjdjh0,null,Pczy000,Pczyks0,'N',Pzxcgbz,Ptsxx00,Pxxxx00,'0'); delete YJ_YWJJ00 where YJDJH0=Pyjdjh0; delete YJ_YWMX00 where YJDJH0=Pyjdjh0; end if; delete YJ_YW0000 where YJDJH0=Pyjdjh0; delete YJ_YYBRB0 where YYID00=Vyw0000.YYID00; if pOpflag='1' then--修改 Vzldccf :=SF_YJ_ZLDCYP(Pzlxmid,Pzyghid,Pmzzybz,Pyjksbh,Pkdys00,Psl0000,Vyw0000.ZLDCCF,2,Psl0000); else Vzldccf :=SF_YJ_ZLDCYP(Vyw0000.ZLXMID,Vyw0000.ZYGHID,Vyw0000.MZZYBZ,Vyw0000.YJKSBH,Vyw0000.KDYS00,Vyw0000.SL0000,Vyw0000.ZLDCCF,3,Vyw0000.SL0000); end if; else delete YJ_YWMX00 where ID0000=Pywmxid; SF_YJ_YWJJ_NOCOMMIT(Pyjdjh0,Pcxjj00,Pczy000,Pczyks0,'N',Pzxcgbz,Ptsxx00,Pxxxx00); end if; --1.1.1 end if Vyw0000.YZCFID is not null then delete from BQ_YJYZ00 where YZMXID=Vyw0000.YZCFID and YZZT00='0'; end if; if nvl(Ptcid00,0) <> 0 and pOpflag='3' then delete from SF_TCXFMX where DJH000 = Pyjdjh0; end if; if pOpflag='3' then Pzxcgbz := 1; if pcommit='Y' then commit; end if; return; end if; end if; --1.1 end select ZWXM00 into Vczyxm0 from BM_YGBM00 where YGBH00=Pczy000; Vzxmid0:=Pzxmid0; if pOpflag='1' or Vzxmid0 is null then --前台参数没有传参数,重新取字典定义固定的子项目作为本检验单的子项目 for ZXM in Cjyzxm0 Loop if Vzxmid0 is null then Vzxmid0:=to_char(ZXM.ZXMID0); else Vzxmid0:=Vzxmid0||','||to_char(ZXM.ZXMID0); end if; end loop; if Vzxmid0 is null then Ptsxx00:='没有选中子项目,不能保存'; Raise ECustom; end if; end if; if Pfjdjbz in ('1','2','9') and nvl(Pfyjdjh,0) = 0 then Ptsxx00 := '附加单据必需指定主单据!'; raise Ecustom; end if; if Popflag=2 then--增加 if nvl(Pyjdjh0,0)=0 then select SQ_YJ_YW0000_YJDJH0.nextval into Pyjdjh0 from DUAL; end if; Vzldccf :=SF_YJ_ZLDCYP(Pzlxmid,Pzyghid,Pmzzybz,Pyjksbh,Pkdys00,Psl0000,null,1,0); -- ruanbh 2017.09.12 福州福清市医院新院:项目开单科室限制 for MZYS9-20170908-002 select count(*) into Vcounter from YS_XMKDKS where ZLXMID=Pzlxmid; if Vcounter>0 then select count(*) into Vcounter from YS_XMKDKS where ZLXMID=Pzlxmid and KDKSBH=Pkdksbh; if Vcounter=0 then select ZLXMJC into Vzlxmjc from BM_ZLZD00 where ZLXMID=Pzlxmid; Ptsxx00 := '当前科室禁止开'||Vzlxmjc||'!'; raise Ecustom; end if; end if; end if; --1.2 begin ----1.2.1 begin if Pmzzybz='1' then--住院病人 select BRID00,ZYH000,XM0000,XB0000,CSRQ00,RYCWH0,nvl(Pkdbq00,DQBQ00),BRZT00,DQKS00 into Vbrid00,Vzyhghh,Vbrxm00,Vxb0000,Vcsrq00,Vch0000,Vkdbq00,Vbrzt00,Vdqks00 from ZY_BRXXB0 where ZYID00=Pzyghid; if substr(Vbrzt00,1,1) not in ('1','2','3') then Ptsxx00 :='病人处于非在院状态,不能开单'; Raise Ecustom; end if; --出院登记状态不允许开单 --要求出院登记病人代煎费也能开单 if substr(Vbrzt00,1,1) in ('3') and nvl(Pfjdjbz,'0')<>'7' then Ptsxx00 :='病人处于非在院状态,不能开单!'; Raise Ecustom; end if; select max(ZYID00) into Vzyid00 from ZY_BRXXB0 where BRID00=Vbrid00; if Vzyid00<>Pzyghid then Ptsxx00 :='病人已经再次入院,请刷新后重新开单'; Raise Ecustom; end if; Vkdksbh := Pkdksbh; --取手术单对应的申请科室 if Pssdh00 is not null and Pyjlrbz = 'S' then --2015.07.17 手术室录入的医技单对应的开单科室编号 select nvl(max(KDKSBH),Vkdksbh) into Vkdksbh from BQ_YJYZ00 a,SS_YW0000 b where a.yzmxid=b.yzmxid and b.ssdh00=Pssdh00 and Vkdksbh not in (select BMBH00 from vw_bm_mzbm00); select max(SQKS00) into Vsqks00 from SS_YW0000 a where ssdh00=Pssdh00 and Exists (select 1 from BM_BQKS00 where KSH000=a.SQKS00); if Vsqks00 is not null then Vdqks00 := Vsqks00; elsif Vbrzt00 = '21' then --取转区前科室 select max(LDLSH0) into VLDLSH0 from BQ_BRLDXX where ZYID00=Pzyghid and JSRQ00 is null and YXBZ00='1'; if VLDLSH0 is not null then select nvl(max(KSH000),Vdqks00) into Vdqks00 from BQ_BRLDXX where ZYID00=Pzyghid and LDLSH0=(select max(LDLSH0) from BQ_BRLDXX where ZYID00=Pzyghid and LDLSH00; if Vcounter>0 then select count(1) into Vcounter from VW_YS_YXGH00 where GHH000=Vzyhghh and GHLB00>0; if Vcounter<=0 then Ptsxx00 := '挂号'||Vzyhghh||' 已失效!请重新挂号或选择有效挂号再开单'; raise Ecustom; end if; end if; end if; if Vxmsqd0 = 'Y' then select count(1) into Vcounter from YS_XMSQD0 where SQDID0=(select SQDID0 from BM_ZLZD00 where ZLXMID=Pzlxmid) and GHID00=Pzyghid; if Vcounter>0 then select SQID00 into Vsqid00 from YS_XMSQD0 where SQDID0=(select SQDID0 from BM_ZLZD00 where ZLXMID=Pzlxmid) and GHID00=Pzyghid and rownum=1; end if; end if; select count(1) into Vcounter from XT_XTCS00 where NAME00 = 'YJ_KDKSSFSQKS' and VALUE0 = 'Y'; if Vcounter > 0 then Vkdksbh := Pkdksbh; else Vkdksbh := Vdqks00; end if; select nvl(max(a.YSZID0),0) into Vyszid0 from ZS_YSZMX0 a,ZS_YSZ000 b,BM_BMBM00 c where a.YSZID0=b.YSZID0 and b.SSKSBH=c.BMBH00 and c.BMXZ00='0' and a.YSBH00=Pkdys00; end if; --1.2.2 end ----1.2 end if Pbh0000 is not null then select YBLB00,FBBH00 into Vyblb00, Vfbbh00 from BM_BRXXB0 where BRID00=Vbrid00; select YBZXLB into Vybzxlb from IC_YBBRLB where YBLB00=Vyblb00 and FBBH00=Vfbbh00; select MC0000 into Vmc0000 from BM_TSBZB0 where trim(BH0000)=trim(Pbh0000) and YBZXLB=Vybzxlb; end if ; select ZLXMJC,DW0000,FBZXBZ,LBBH00,JYTZBH,XBBZ00,NLXZ00 into Vzlxmjc,Vdw0000,Vfbzxbz,Vlbbh00,VJYTZBH,VXBBZ00,VNLXZ00 from BM_ZLZD00 where ZLXMID=Pzlxmid; select ZWXM00,BMBH00 into Vkdysxm,Vysszks from BM_YGBM00 where YGBH00=Pkdys00; if VXBBZ00='0' and Vxb0000='女' then Ptsxx00 := '项目“'||Vzlxmjc||'”只允许给男性患者开单'; raise Ecustom; elsif VXBBZ00='1' and Vxb0000='男' then Ptsxx00 := '项目“'||Vzlxmjc||'”只允许给女性患者开单'; raise Ecustom; end if; if VNLXZ00 is not null then select FLOOR((MONTHS_BETWEEN(SYSDATE,TO_DATE(Vcsrq00,'YYYYMMDD')))/12) into VBRNL00 from dual; if substrb(VNLXZ00,1,1)='>' then if to_number(nvl(substrb(VNLXZ00,2,3),'0'))>=VBRNL00 then Ptsxx00 := '项目“'||Vzlxmjc||'”只允许给年龄'||VNLXZ00||'岁患者开单'; raise Ecustom; end if; elsif substrb(VNLXZ00,1,1)='<' then if to_number(nvl(substrb(VNLXZ00,2,3),'0'))<=VBRNL00 then Ptsxx00 := '项目“'||Vzlxmjc||'”只允许给年龄'||VNLXZ00||'岁患者开单'; raise Ecustom; end if; end if; end if; if nvl(Pzyghid,0)=0 then Ptsxx00 := '未指定病人不能开单'; raise Ecustom; end if; if Pzdid00 is null then begin --如果没有选择诊断,不要自动填写诊断 yangy --if Pmzzybz = '0' then -- select trim(ICD900) into Vzdid00 from YS_BRZDXX where GHID00 = Pzyghid and ZZDBZ0 = '3' and rownum=1; --else if Pmzzybz = '1' then select count(*) into Vcounter from BQ_BRZDXX where ZYID00 = Pzyghid and ZDLB00='2' and rownum=1; if Vcounter<>0 then select trim(ZDM000) into Vzdid00 from BQ_BRZDXX where ZYID00 = Pzyghid and ZDLB00='2' and rownum=1; else select trim(ZDM000) into Vzdid00 from BQ_BRZDXX where ZYID00 = Pzyghid and ZDLB00='3' and rownum=1; end if; end if; exception when no_data_found then Vzdid00 := null; end; else Vzdid00 := Pzdid00; end if; ----插入诊断编号,自动填写诊断名称 --if (Vzdid00 is not null) and (Pzdmc00 is null) then -- select JBMC00 into Vzdmc00 from XT_ICD900 where ICD900=Vzdid00; --end if; insert into YJ_YW0000(YJDJH0, YJKSBH, MZZYBZ, ZYGHID, ZYHGHH, BRID00, BRXM00, XB0000, CSRQ00, NL0000, CH0000, ZLXMID, ZLXMJC, DW0000, FBZXBZ, ZLDCCF, KDYS00, DQKS00, KDYSXM, YSSZKS, KDKSBH, KDBQ00, LRXM00, JZBZ00, ZDID00, ZDMC00, XMZT00, BZ0000, SL0000, APRQ00, YJFZH0, BBID00, BH0000, YZCFID, MC0000, YJLRBZ, KDRQ00, KDSJ00, SQID00, FJDJBZ, BWMC00, YSZID0,TQPC00,TXM000,WZBM00,SSBM00,SSMC00,SSYJDH,WZBH00,XMZK00,TCID00,YEXM00) values(Pyjdjh0, Pyjksbh, Pmzzybz, Pzyghid, Vzyhghh, Vbrid00, Vbrxm00, Vxb0000, Vcsrq00, SF_XT_CSRQTONL(Vcsrq00, Vczrq00), Vch0000, Pzlxmid, Vzlxmjc, Vdw0000, Vfbzxbz, Vzldccf, Pkdys00, Vdqks00, Vkdysxm, Vysszks, Vkdksbh, Vkdbq00, Vczyxm0, nvl(Pjzbz00,'N'), Vzdid00, nvl(Pzdmc00,Vzdmc00), '0', Pbz0000, Psl0000, null, null, Pbbid00, PBH0000, Pyzcfid, Vmc0000, Pyjlrbz, Vczrq00, Vczsj00, Vsqid00, Pfjdjbz, Pbwmc00, Vyszid0,nvl(Ptqpc00,0),Ptxm000,Pwzbm00,Pssbm00,Pssmc00,Pssyjdh,Pwzbh00,Pxmzk00,Ptcid00,VYEXM00); SP_EXECUTE_SQL('insert into YJ_YWMX00 (ID0000,YJDJH0,ZLXMID,XMMC00,JGDW00,CKZ000,SL0000)'|| ' select SQ_YJ_YWMX00_ID0000.nextval,'||to_char(Pyjdjh0)||',ZLXMID,ZLXMJC,JGDW00,CKZ000,'||to_char(Psl0000)|| ' from BM_ZLZD00 where ZLXMID in ('||Vzxmid0||')'); SF_YJ_YWJJ_NOCOMMIT(Pyjdjh0,Pcxjj00,Pczy000,Pczyks0,'N',Pzxcgbz,Ptsxx00,Pxxxx00,Pyjzhje); --如果是套餐项目,需要处理病人套餐消费表数据 if nvl(Ptcid00,0) <> 0 then if Popflag = 2 then insert into SF_TCXFMX(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,CZY000,KDKS00,KDYS00,ZXKS00,BRID00,XM0000,TCID00,MBMXID) values(SQ_SF_TCXFMX_MXID00.Nextval,Pyjdjh0,Pzlxmid,Vzlxmjc,null,Vdw0000,null,Psl0000,Pyjzhje,Pkdys00,Vkdksbh,Pkdys00,Pyjksbh,Vbrid00,Vbrxm00,Ptcid00,Pmbmxid); elsif Popflag = 1 then update SF_TCXFMX set XMBH00=Pzlxmid,XMMC00=Vzlxmjc,XMDW00=Vdw0000,XMSL00=Psl0000,HJJE00=Pyjzhje,CZY000=Pkdys00, KDKS00=Vkdksbh,KDYS00=Pkdys00,ZXKS00=Pyjksbh where DJH000=Pyjdjh0; end if; end if; if Pcxjj00 = 0 then update YJ_YW0000 a set XMZT00='1',ZJE000=(select nvl(sum(Round(NVL(JJJE00,0)*SL0000*SFCS00,2)),0) from YJ_YWJJ00 where YJDJH0=a.YJDJH0) where YJDJH0=Pyjdjh0; end if; if Pfjdjbz in ('1','2','9') then insert into YJ_YJDJGL(FYJDJH,ZYJDJH) select Pfyjdjh, Pyjdjh0 from dual where not exists(select 1 from YJ_YJDJGL where FYJDJH=Pfyjdjh and ZYJDJH=Pyjdjh0); end if; Vyjdsx0 := SF_YJ_JudgeYJDSX(Pyjdjh0); if Vyjdsx0 = 0 then if nvl(Vssdh00,0) = 0 then if Pyzcfid is not null then select nvl(max(SSDH00),0) into Vssdh00 from SS_YW0000 where ZYGHID=Pzyghid and YZMXID=Pyzcfid; end if; if nvl(Vssdh00,0) = 0 then select SQ_SS_YW0000_SSDH00.nextval into Vssdh00 from dual; end if; end if; update SS_YW0000 set YZMXID=Pyzcfid,YYSSRQ=nvl(YYSSRQ,Vczrq00),YYSSSJ=nvl(YYSSSJ,Vczsj00),YSZID0=Vyszid0 where SSDH00=Vssdh00; if sql%notfound then select count(*)+1 into Vssxh00 from SS_YW0000 where ZYHGHH=Vzyhghh and SSZT00<>'3'; insert into SS_YW0000(SSDH00,SSXH00,MZZYBZ,ZYHGHH,ZYGHID,BRID00,XM0000,XB0000,CSRQ00, JZBZ00, SSKS00,SQYS00,SQKS00,SQR000,SRKSLB,YYSSRQ,YYSSSJ,YYBZ00,SSYS00,SSYSXM, SSQSRQ,SSQSSJ,BZ0000,SQZD00,SQZDMC,CZY000,SQRQ00,SQSJ00,CZRQ00,SSZT00,YZMXID,YSZID0) values(Vssdh00,Vssxh00,Pmzzybz,Vzyhghh,Pzyghid,Vbrid00,Vbrxm00,Vxb0000,Vcsrq00, nvl(Pjzbz00,'N'), Pyjksbh,Pkdys00,Pkdksbh,Pczy000,SF_SS_YW0000_SRKSLB('8'),Vczrq00,Vczsj00,'N',Pkdys00,Vkdysxm, null,null,Pbz0000,Pzdid00,nvl(Pzdmc00,Vzdmc00),Pczy000,Vczrq00,Vczsj00,Vczrq00||Vczsj00,'0',Pyzcfid,Vyszid0); end if; update SS_YW0000 set SSDJMC=(select SSDJMC from BM_ZLZD00 a,BM_SSDJ00 b where a.ZLXMID=Pzlxmid and a.SSDJBH=b.SSDJBH) where SSDH00=Vssdh00; insert into SS_YWMX00(ID0000,SSDH00,SFZSS0,SSBH00,SSDJMC,SSXMJC,YJDJH0) select SQ_SS_SSYWMX_ID0000.nextval,Vssdh00,'0',Pzlxmid,SSDJMC,a.ZLXMJC,Pyjdjh0 from BM_ZLZD00 a,BM_SSDJ00 b where a.ZLXMID=Pzlxmid and a.SSDJBH=b.SSDJBH(+) and not exists(select 1 from SS_YWMX00 where SSDH00=Vssdh00 and SSBH00=Pzlxmid); select SF_SS_GETSSDH(Pmzzybz, Pzyghid) into Vssdh01 from dual; insert into SS_SSYJD0(SSDH00,YJDJH0,SSMZBZ) select Vssdh00,Pyjdjh0,'0' from dual where not exists(select 1 from SS_SSYJD0 where SSDH00=Vssdh00 and YJDJH0=Pyjdjh0); end if; if Vyjdsx0 = 2 then if Pfjdjbz <> '5' then select nvl(trim(max(VALUE0)),0) into Vxkbmbh from XT_XTCS00 where NAME00='XK_XKBMBH' ; --判断血库内部编号 select nvl(max(trim(value0)),'N') into Vcfsfmr from XT_XTCS00 where NAME00='XK_SXXZSFMR'; --成分是否默认 if Vxkbmbh <> 0 then if Vcfsfmr = 'Y' then Vsxsz00 :='常规'; select nvl(max(MC0000),'') into Vsxcf00 from BM_TYZD00 a,BM_SQSXGL b where a.NBBH00=b.SXCFID and a.YXBZ00='1' and b.ZLXMID=Pzlxmid; else Vsxsz00 :=''; Vsxcf00 :=''; end if; if nvl(Vsqdh00,0) = 0 then select Lpad(SQ_XK_SXSQ00_SQDH00.nextval,6,'0') into Vsqdh00 from dual; end if; if nvl(Vkdbq00,0)>0 then select nvl(max(BMMC00),'') into VBQMC00 from bm_bmbm00 where bmbh00=Vkdbq00; else VBQMC00 := ''; end if; insert into XK_SXSQ00(XKBMBH,SQDH00,ZYID00,ZYH000,BRID00,SQKS00,KSMC00,CH0000,LRRXM0,LRRQ00,LRSJ00,SQZT00,YZMXID,SXSL00, SXDW00,SQYSBH,SQRQ00,SQSJ00,CYRQ00,BQMC00,LCZDMC,SXSZ00,SXCF00,MZZYBZ) select Vxkbmbh,Vsqdh00,Pzyghid,Vzyhghh,Vbrid00,Pkdksbh,BMMC00,nvl(Vch0000,'0'),Vczyxm0,Vczrq00,Vczsj00,'1',Pyjdjh0,Psl0000, Vdw0000,Pkdys00,Vczrq00,Vczsj00,Vczrq00,VBQMC00,nvl(Pzdmc00,Vzdmc00), Vsxsz00,Vsxcf00,decode(Pmzzybz,'0','门诊','住院') from BM_BMBM00 where BMBH00=Pkdksbh; update YJ_YW0000 set XMZT00='0' where YJDJH0=Pyjdjh0 and XMZT00 in ('0','1'); delete from YJ_YWJJ00 where YJDJH0=Pyjdjh0; --未插入过病人信息的,第一次要插入病人信息 insert into XK_BRXX00 (BRID00,MRN000,ZYH000,XM0000,XB0000,CSRQ00,MZZYBZ) select Vbrid00,0,Vzyhghh,Vbrxm00,Vxb0000,Vcsrq00,decode(Pmzzybz,'0','门诊','住院') from dual where rownum=1 and not exists (select 1 from XK_BRXX00 where BRID00=Vbrid00); end if; end if; end if; if Vyjdsx0=1 then -- select nvl(max(trim(VALUE0)),'0') into Vtxmfs0 from XT_XTCS00 where NAME00='JY_TXMFS'; -- select nvl(max(trim(VALUE0)),'N') into Vzhxmcf from XT_XTCS00 where NAME00='JY_ZHXMSFCF'; -- select nvl(max(trim(VALUE0)),'N') into Vcfdjxm from XT_XTCS00 where NAME00='JY_CFDJXM' and instr(','||trim(VALUE0)||',',','||Pzlxmid||',')>0; begin select to_number(nvl(max(trim(VALUE0)),'1')) into Vjyxmsl from XT_XTCS00 where NAME00='YJ_JYXMSL'; exception when others then Vjyxmsl := 1; end; if (Psl0000 > Vjyxmsl) and (nvl(PSFTJ00,'N')='N') then Ptsxx00 := '检验项目数量只能为'||to_char(Vjyxmsl); raise Ecustom; end if; --借床病人 床位所属于科室 if Pmzzybz='1' then select nvl(max(KSH000),0) into VJCKSBH from bm_cwk000 where zyid00=Pzyghid and CWZT00='1' and Vdqks00<>KSH000; end if; if Pfjdjbz = '0' then --and Pbbid00 is not null for row in Cjydcxm loop if (Pmzzybz='0' and row.mzzybz in (0,2)) or (Pmzzybz ='1' and row.mzzybz in (1,2)) or (row.mzzybz = '4') then if row.FLAG00 = 0 then --1.4 begin if row.FJDJBZ='2'then --1.3 begin if Pmzzybz='0' then select count(*),max(a.ZYJDJH) into Vcounter,VZYJDJH from YJ_YJDJGL a, YJ_YW0000 b,YJ_YW0000 c,BM_ZLZD00 d where b.ZYGHID=Pzyghid and b.MZZYBZ=Pmzzybz and b.FJDJBZ='2' and a.ZYJDJH=b.YJDJH0 and a.SCX000='0' and b.ZLXMID=row.ZLXMID and b.XMZT00 in ('0','1') and nvl(a.SFQR00,'0') <> '1' and b.JZBZ00=nvl(Pjzbz00,'N') and a.FYJDJH=c.YJDJH0 and c.XMZT00 in ('0','1') and c.ZLXMID=D.ZLXMID and nvl(D.JYTZBH,'-')=nvl(VJYTZBH,'0') and not exists(select 1 from YJ_YW0000 where ZYGHID=Pzyghid and MZZYBZ=Pmzzybz and ZLXMID=Pzlxmid and XMZT00 in ('0','1') and YJDJH0<>Pyjdjh0 and SL0000>0); else select count(*),max(a.ZYJDJH) into Vcounter,VZYJDJH from YJ_YJDJGL a, YJ_YW0000 b,YJ_YW0000 c,BM_ZLZD00 d where b.ZYGHID=Pzyghid and b.MZZYBZ=Pmzzybz and b.FJDJBZ='2' and a.ZYJDJH=b.YJDJH0 and a.SCX000='0' and b.ZLXMID=row.ZLXMID and b.XMZT00 in ('0','1','2') and nvl(a.SFQR00,'0') <> '1' and b.JZBZ00=nvl(Pjzbz00,'N') and a.FYJDJH=c.YJDJH0 and c.XMZT00 in ('0','1','2') and c.ZLXMID=D.ZLXMID and nvl(D.JYTZBH,'-')=nvl(VJYTZBH,'0') --and not exists(select 1 from HIS_REQUISITION where HIS_ID=to_char(c.YJDJH0) and REQUISITION_STATE not in ('preinspect','printed')) --2014.02.27 and not exists(select 1 from HIS_REQUISITION where HIS_ID=to_char(c.YJDJH0) and REQUISITION_STATE is not null) and not exists(select 1 from YJ_YW0000 where ZYGHID=Pzyghid and MZZYBZ=Pmzzybz and ZLXMID=Pzlxmid and XMZT00 in ('0','1') and YJDJH0<>Pyjdjh0 and SL0000>0); end if; --1.3end else --取未执行的附加费数量 select count(*),max(a.ZYJDJH) into Vcounter,VZYJDJH from YJ_YJDJGL a, YJ_YW0000 b,YJ_YW0000 c where b.ZYGHID=Pzyghid and b.MZZYBZ=Pmzzybz and b.FJDJBZ<>'0' and a.ZYJDJH=b.YJDJH0 and a.SCX000='0' and b.ZLXMID=row.ZLXMID and b.XMZT00 in ('0','1','2') and nvl(a.SFQR00,'0') <> '1' and b.JZBZ00=nvl(Pjzbz00,'N') and a.FYJDJH=c.YJDJH0 and c.XMZT00 in ('0','1','2') --2014.01.24 and b.FJDJBZ=row.FJDJBZ --2014.01.22 and not exists(select 1 from HIS_REQUISITION where HIS_ID=to_char(c.YJDJH0) and REQUISITION_STATE not in ('preinspect','printed')) and not exists(select 1 from YJ_YW0000 where ZYGHID=Pzyghid and MZZYBZ=Pmzzybz and ZLXMID=Pzlxmid and XMZT00 in ('0','1') and YJDJH0<>Pyjdjh0 and SL0000>0); end if; --1.4 end if row.FJDJBZ in ('1','2') and Vcounter>0 and (row.SL0000 - Vcounter)<=0 and VZYJDJH is not null and row.DCLX00 = '1' then insert into YJ_YJDJGL(FYJDJH,ZYJDJH) select Pyjdjh0, VZYJDJH from dual where not exists(select 1 from YJ_YJDJGL where FYJDJH=Pyjdjh0 and ZYJDJH=VZYJDJH); end if; if row.CJFS00 = '1' then if row.DCLX00 = '1' then Vcs0000 := row.SL0000 - Vcounter; else Vcs0000 := row.SL0000; end if; Vsl0000 := 1; else Vcs0000 := 1; if row.DCLX00 = '1' then Vsl0000 := row.SL0000 - Vcounter; else Vsl0000 := row.SL0000; end if; end if; else Vsl0000 := row.SL0000; Vcs0000 := 1; end if; if Vsl0000 > 0 and Vcs0000 > 0 then loop Vyjdjh0 := null; if Pmzzybz = '1' and row.FJDJBZ in ('1','2') then Vyjksbh := Pkdksbh; --借床病人 if Pkdksbh = Vdqks00 and VJCKSBH>0 then Vyjksbh := VJCKSBH; end if; else Vyjksbh := Pyjksbh; end if; SP_YJ_YJSQWH( 2, --操作内容 1修改 2增加 3删除 Vyjdjh0, --操作的医技单据号 Pzyghid, --挂号id Pmzzybz, --门诊住院标志 row.ZLXMID, --诊疗项目id null, --子项目id串,如果没有传入参数,表示使用所有明细项 Pzdid00, --诊断id Pzdmc00, --诊断名称 null, --标本ID Pbh0000, --特殊病种编号 Pyjlrbz, --医技录入标志 Pjzbz00, --急诊标志 Pkdys00, --开单医生 Pkdksbh, --开单科室编号 Pkdbq00, --开单病区 Vyjksbh, --医技科室编号 Vsl0000, --数量 null, --备注 row.FJDJBZ, Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 null, --业务明细ID Popflag=3时 可能用到 null, --部位名称 Pyjdjh0, --父医技单据号 1, --重新计价 Pyzcfid, null, Ptxm000, Pwzbm00, Pssbm00, Pssmc00, Pssyjdh, Pwzbh00, Ptqpc00, Pxmzk00 ); if Pzxcgbz = 1 then insert into YJ_YJDJGL(FYJDJH,ZYJDJH) select Pyjdjh0, Vyjdjh0 from dual where not exists(select 1 from YJ_YJDJGL where FYJDJH=Pyjdjh0 and ZYJDJH=Vyjdjh0); end if; Vcs0000 := Vcs0000 - 1; exit when Vcs0000 < 1; end loop; end if; end if; end loop; end if; end if; SP_YJ_YjComverToYz( Pyjdjh0, --操作的医技单据号 Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 );  Pzxcgbz:=1; if pcommit='Y' then commit; end if; exception when no_data_found then raise_application_error(-20001,substrb('没有找到数据!*'||sqlerrm,1,240)); when Ecustom then raise_application_error(-20010,substrb(Ptsxx00||'!*',1,240)); when others then --raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240)); raise_application_error(-20002,dbms_utility.format_error_backtrace||substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,220)); end;