CREATE OR REPLACE FUNCTION SF_ZY_YBXMBM( PZYID00 number, --住院id PSFXMID number, --项目id PSFYP00 char, --是否药品 PGJBM00 char --国家编码 ) return varchar2 is VYBXMBM varchar2(50); VYYID00 XT_YYXX00.YYID00%type; VFBBH00 ZY_BRXXB0.FBBH00%type; VYBLB00 ZY_BRXXB0.YBLB00%type; VYBBRLB ZY_BRXXB0.YBBRLB%type; VYBZXLB IC_YBBRLB.YBZXLB%type; VXTCS00 varchar2(100); -- MODIFICATION HISTORY -- Person Date Comments -- zhangyc 2016.01.29 created by ZYSF-20160113-001; -- zhangyc 2023.03.14 VYBXMBM varchar2(40)-->varchar2(50) begin VYBXMBM:=substrb(trim(PGJBM00),1,50); select SF_SF_GETYYID00() YYID00 into VYYID00 from dual; --清单打印国家编码显示方式:0:默认国家编码;1:药品内码 2:医保项目编码 begin select trim(VALUE0)into VXTCS00 from xt_Xtcs00 where name00 in ('ZY_QDDYGJBMXSFS'); exception when others then VXTCS00:='0'; end; if VXTCS00='0' then --0:国家编码 VYBXMBM:=substrb(trim(PGJBM00),1,50); elsif VXTCS00='1' then --1:药品内码 VYBXMBM:=PSFXMID; elsif VXTCS00='2' then --2:医保项目编码 begin select a.FBBH00,a.YBLB00,a.YBBRLB,b.YBZXLB into VFBBH00,VYBLB00,VYBBRLB,VYBZXLB from ZY_BRXXB0 A,IC_YBBRLB b where A.ZYID00=PZYID00 and A.FBBH00 = b.FBBH00 and A.YBLB00 = b.YBLB00; select substrb(trim(YBXMBH),1,50) into VYBXMBM from VW_BM_YBSFDY where YBZXLB=VYBZXLB and FBBH00=VFBBH00 and YBBRLB=VYBBRLB and SFXMID=PSFXMID and SFYP00=PSFYP00 and rownum=1; exception when others then VYBXMBM:=PGJBM00; end; else --0:国家编码 VYBXMBM:=substrb(trim(PGJBM00),1,50); end if; if trim(VYBXMBM) is null then VYBXMBM:=substrb(trim(PGJBM00),1,50); end if; return substrb(trim(VYBXMBM),1,50); end;