有谁能看懂这个oracle的存储过程,请详细说明(100分)

W

wecluo

Unregistered / Unconfirmed
GUEST, unregistred user!
CREATE OR REPLACE PROCEDURE YYMIS.SAVENEWFHD(CurDepart varchar2,CurDjlx integer,
CurKhdm varchar2,CurKprq varchar2,CurXsxz integer,CurThfs integer,
CurJsfs integer,CurDjpzh out varchar2,CurKpType integer,IsNewRec varchar2,
OldDjpzh varchar2,CurFhdType integer,CurCzyh varchar2,CurPfyh varchar2,
CurBmSelWhenCls varchar2,CurIsLbCash varchar2,
CurYpBh1 varchar2,CurYpUnit1 varchar2,CurPh1 varchar2, CurBz1 varchar2,CurGtNum1 varchar2,
CurYyyh1 varchar2,CurLs_Price1 varchar2,CurKl1 varchar2,CurDjdj1 varchar2,CurDjsl1 varchar2,
CurYpPym1 varchar2,CurDjzy1 varchar2,CurClsBm1 varchar2,CurIsZbYp1 varchar2,
CurYpBh2 varchar2,CurYpUnit2 varchar2,CurPh2 varchar2, CurBz2 varchar2,CurGtNum2 varchar2,
CurYyyh2 varchar2,CurLs_Price2 varchar2,CurKl2 varchar2,CurDjdj2 varchar2,CurDjsl2 varchar2,
CurYpPym2 varchar2,CurDjzy2 varchar2,CurClsBm2 varchar2,CurIsZbYp2 varchar2,
CurYpBh3 varchar2,CurYpUnit3 varchar2,CurPh3 varchar2, CurBz3 varchar2,CurGtNum3 varchar2,
CurYyyh3 varchar2,CurLs_Price3 varchar2,CurKl3 varchar2,CurDjdj3 varchar2,CurDjsl3 varchar2,
CurYpPym3 varchar2,CurDjzy3 varchar2,CurClsBm3 varchar2,CurIsZbYp3 varchar2,
CurYpBh4 varchar2,CurYpUnit4 varchar2,CurPh4 varchar2, CurBz4 varchar2,CurGtNum4 varchar2,
CurYyyh4 varchar2,CurLs_Price4 varchar2,CurKl4 varchar2,CurDjdj4 varchar2,CurDjsl4 varchar2,
CurYpPym4 varchar2,CurDjzy4 varchar2,CurClsBm4 varchar2,CurIsZbYp4 varchar2,
CurYpBh5 varchar2,CurYpUnit5 varchar2,CurPh5 varchar2, CurBz5 varchar2,CurGtNum5 varchar2,
CurYyyh5 varchar2,CurLs_Price5 varchar2,CurKl5 varchar2,CurDjdj5 varchar2,CurDjsl5 varchar2,
CurYpPym5 varchar2,CurDjzy5 varchar2,CurClsBm5 varchar2,CurIsZbYp5 varchar2,
CurYpBh6 varchar2,CurYpUnit6 varchar2,CurPh6 varchar2, CurBz6 varchar2,CurGtNum6 varchar2,
CurYyyh6 varchar2,CurLs_Price6 varchar2,CurKl6 varchar2,CurDjdj6 varchar2,CurDjsl6 varchar2,
CurYpPym6 varchar2,CurDjzy6 varchar2,CurClsBm6 varchar2,CurIsZbYp6 varchar2,
CurYpBh7 varchar2,CurYpUnit7 varchar2,CurPh7 varchar2, CurBz7 varchar2,CurGtNum7 varchar2,
CurYyyh7 varchar2,CurLs_Price7 varchar2,CurKl7 varchar2,CurDjdj7 varchar2,CurDjsl7 varchar2,
CurYpPym7 varchar2,CurDjzy7 varchar2,CurClsBm7 varchar2,CurIsZbYp7 varchar2,
CurYpBh8 varchar2,CurYpUnit8 varchar2,CurPh8 varchar2, CurBz8 varchar2,CurGtNum8 varchar2,
CurYyyh8 varchar2,CurLs_Price8 varchar2,CurKl8 varchar2,CurDjdj8 varchar2,CurDjsl8 varchar2,
CurYpPym8 varchar2,CurDjzy8 varchar2,CurClsBm8 varchar2,CurIsZbYp8 varchar2,
CurIsCf varchar2,CurCfName varchar2,CurCfSex varchar2,CurCfOld Varchar2,
CurCfAddr varchar2,CurCfzz varchar2,CurCfDoctor varchar2,CurCfsl varchar2,
CurCashPzh out varchar2,CurSqlCode out integer,CurSqlErrMsg out varchar2)is
--入口参数CZYH是多个参数的汇总 2001/03/16
FHDDFHD CONSTANT integer:=13;NEWFHD CONSTANT integer:=10;SKDDFHD CONSTANT integer:=11;
CurOrd integer;TempInt1 integer;TempInt2 Integer;TempInt3 Integer;TempInt4 Integer;
CurUnitRatio Number(12,4);

v_YpBh yymis.t_Tysl;v_YpUnit yymis.t_Tysl;v_Ph yymis.t_Tysl; v_Bz yymis.t_Tysl;
v_GtNum yymis.t_Tysl;v_Yyyh yymis.t_Tysl;v_Ls_Price yymis.t_Tysl;v_Kl yymis.t_Tysl;
v_Djdj yymis.t_Tysl;v_Djsl yymis.t_Tysl;v_YpPym yymis.t_Tysl;v_Djzy yymis.t_Tysl;
v_ClsBm yymis.t_Tysl;v_Djje yymis.t_Tysl;v_Param yymis.t_Tysl;v_IsZbYp yymis.t_Tysl;
TempReal1 number(16,2);
CurDjdj number(16,4);CurADjdj number(16,4);CurPhDjdj number(16,4);
CurVarStorer yymis.t_Tysl;CurVarYpqdh yymis.t_Tysl;CurVarCk yymis.t_Tysl;
CurVarGtIndex yymis.t_Tysl;c_TotalPzh Ckzbk.TotalPzh%Type;
c_Zbjc Ckzbk.Zbjc%Type;CurTotalPzh varchar2(12);
theDjpzh varchar2(8);

Cursor c_Fhd is select * from fhd where Depart=CurDepart and Djlx=CurDjlx and Djpzh=theDjpzh for update;
r_Fhd Fhd%RowType;
EnabledZeroXssl Boolean;
LinesPerPage Integer;CurClsIndex integer;
IsPfDepart varchar2(1);CurIsYkKhdm varchar2(1);CurCanRed varchar2(1);
CurHaveQkNum number(16,2);CurRatioJe number(16,2);CurLs_Price number(16,2);
CurPf_Price number(16,2);CurYwJe number(16,2);
CurFlKhdm varchar2(10);
v_FirstClsNum yymis.t_Tysl;v_FirstClsJe yymis.t_Tysl;

Cursor c_Spmll is select * from Spmll where Cls_Grade=1 order by Cls_Num ASC;
r_Spmll Spmll%RowType;
CurYwsl number(16,4);theYwsl number(16,4);
CurYwYh varchar2(1);CurJxxx varchar2(1);CurPrtQdh varchar2(1); --零售整笔业务优惠

BEGIN

CurSqlCode:=0;
CurSqlErrMsg:='';
v_YpBh:=yymis.t_Tysl()这是包中声明的;
v_YpUnit:=yymis.t_Tysl();
v_Ph:=yymis.t_Tysl();
v_Bz:=yymis.t_Tysl(); -- 50
v_GtNum:=yymis.t_Tysl();
v_Yyyh:=yymis.t_Tysl();
v_Ls_Price:=yymis.t_Tysl();
v_Kl:=yymis.t_Tysl();
v_Djdj:=yymis.t_Tysl();
v_Djsl:= yymis.t_Tysl();
v_YpPym:= yymis.t_Tysl();
v_Djzy:= yymis.t_Tysl();
v_ClsBm:= yymis.t_Tysl();
v_Djje:= yymis.t_Tysl();
CurVarStorer:=yymis.t_Tysl();
CurVarYpqdh:=yymis.t_Tysl();
CurVarGtIndex:=yymis.t_Tysl();
v_Param:=yymis.t_Tysl();
v_IsZbYp:=yymis.t_Tysl();

yymis.CfStrToVarray(CurCzyh,v_Param); --2001/03/16
-- v_Param(1) curCzyh v_Param(2) CurBsc v_Param(3) XSHTNUM v_Params(4) ISSELLTSYP v_Param(5) SQUSERNAME

yymis.CfStrToVarray(CurYpBh1,v_YpBh);
yymis.CfStrToVarray(CurYpUnit1,v_YpUnit);
yymis.CfStrToVarray(CurPh1,v_Ph);
yymis.CfStrToVarray(CurBz1,v_Bz);
yymis.CfStrToVarray(CurGtNum1,v_GtNum);
yymis.CfStrToVarray(CurYyyh1,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price1,v_Ls_Price);
yymis.CfStrToVarray(CurKl1,v_Kl);
yymis.CfStrToVarray(CurDjdj1,v_Djdj);
yymis.CfStrToVarray(CurDjsl1,v_Djsl);
yymis.CfStrToVarray(CurYpPym1,v_YpPym);
yymis.CfStrToVarray(CurDjzy1,v_Djzy);
yymis.CfStrToVarray(CurClsBm1,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp1,v_IsZbYp);
yymis.CfStrToVarray(CurYpBh2,v_YpBh);
yymis.CfStrToVarray(CurYpUnit2,v_YpUnit);
yymis.CfStrToVarray(CurPh2,v_Ph);
yymis.CfStrToVarray(CurBz2,v_Bz);
yymis.CfStrToVarray(CurGtNum2,v_GtNum);
yymis.CfStrToVarray(CurYyyh2,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price2,v_Ls_Price);
yymis.CfStrToVarray(CurKl2,v_Kl);
yymis.CfStrToVarray(CurDjdj2,v_Djdj);
yymis.CfStrToVarray(CurDjsl2,v_Djsl);
yymis.CfStrToVarray(CurYpPym2,v_YpPym);
yymis.CfStrToVarray(CurDjzy2,v_Djzy);
yymis.CfStrToVarray(CurClsBm2,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp2,v_IsZbYp);
yymis.CfStrToVarray(CurYpBh3,v_YpBh);
yymis.CfStrToVarray(CurYpUnit3,v_YpUnit);
yymis.CfStrToVarray(CurPh3,v_Ph);
yymis.CfStrToVarray(CurBz3,v_Bz);
yymis.CfStrToVarray(CurGtNum3,v_GtNum);
yymis.CfStrToVarray(CurYyyh3,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price3,v_Ls_Price);
yymis.CfStrToVarray(CurKl3,v_Kl);
yymis.CfStrToVarray(CurDjdj3,v_Djdj);
yymis.CfStrToVarray(CurDjsl3,v_Djsl);
yymis.CfStrToVarray(CurYpPym3,v_YpPym);
yymis.CfStrToVarray(CurDjzy3,v_Djzy);
yymis.CfStrToVarray(CurClsBm3,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp3,v_IsZbYp);
yymis.CfStrToVarray(CurYpBh4,v_YpBh);
yymis.CfStrToVarray(CurYpUnit4,v_YpUnit);
yymis.CfStrToVarray(CurPh4,v_Ph);
yymis.CfStrToVarray(CurBz4,v_Bz);
yymis.CfStrToVarray(CurGtNum4,v_GtNum);
yymis.CfStrToVarray(CurYyyh4,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price4,v_Ls_Price);
yymis.CfStrToVarray(CurKl4,v_Kl);
yymis.CfStrToVarray(CurDjdj4,v_Djdj);
yymis.CfStrToVarray(CurDjsl4,v_Djsl); -- 100
yymis.CfStrToVarray(CurYpPym4,v_YpPym);
yymis.CfStrToVarray(CurDjzy4,v_Djzy);
yymis.CfStrToVarray(CurClsBm4,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp4,v_IsZbYp);
yymis.CfStrToVarray(CurYpBh5,v_YpBh);
yymis.CfStrToVarray(CurYpUnit5,v_YpUnit);
yymis.CfStrToVarray(CurPh5,v_Ph);
yymis.CfStrToVarray(CurBz5,v_Bz);
yymis.CfStrToVarray(CurGtNum5,v_GtNum);
yymis.CfStrToVarray(CurYyyh5,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price5,v_Ls_Price);
yymis.CfStrToVarray(CurKl5,v_Kl);
yymis.CfStrToVarray(CurDjdj5,v_Djdj);
yymis.CfStrToVarray(CurDjsl5,v_Djsl);
yymis.CfStrToVarray(CurYpPym5,v_YpPym);
yymis.CfStrToVarray(CurDjzy5,v_Djzy);
yymis.CfStrToVarray(CurClsBm5,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp5,v_IsZbYp);
yymis.CfStrToVarray(CurYpBh6,v_YpBh);
yymis.CfStrToVarray(CurYpUnit6,v_YpUnit);
yymis.CfStrToVarray(CurPh6,v_Ph);
yymis.CfStrToVarray(CurBz6,v_Bz);
yymis.CfStrToVarray(CurGtNum6,v_GtNum);
yymis.CfStrToVarray(CurYyyh6,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price6,v_Ls_Price);
yymis.CfStrToVarray(CurKl6,v_Kl);
yymis.CfStrToVarray(CurDjdj6,v_Djdj);
yymis.CfStrToVarray(CurDjsl6,v_Djsl);
yymis.CfStrToVarray(CurYpPym6,v_YpPym);
yymis.CfStrToVarray(CurDjzy6,v_Djzy);
yymis.CfStrToVarray(CurClsBm6,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp6,v_IsZbYp);
yymis.CfStrToVarray(CurYpBh7,v_YpBh);
yymis.CfStrToVarray(CurYpUnit7,v_YpUnit);
yymis.CfStrToVarray(CurPh7,v_Ph);
yymis.CfStrToVarray(CurBz7,v_Bz);
yymis.CfStrToVarray(CurGtNum7,v_GtNum);
yymis.CfStrToVarray(CurYyyh7,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price7,v_Ls_Price);
yymis.CfStrToVarray(CurKl7,v_Kl);
yymis.CfStrToVarray(CurDjdj7,v_Djdj);
yymis.CfStrToVarray(CurDjsl7,v_Djsl);
yymis.CfStrToVarray(CurYpPym7,v_YpPym);
yymis.CfStrToVarray(CurDjzy7,v_Djzy);
yymis.CfStrToVarray(CurClsBm7,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp7,v_IsZbYp);
yymis.CfStrToVarray(CurYpBh8,v_YpBh);
yymis.CfStrToVarray(CurYpUnit8,v_YpUnit);
yymis.CfStrToVarray(CurPh8,v_Ph);
yymis.CfStrToVarray(CurBz8,v_Bz);
yymis.CfStrToVarray(CurGtNum8,v_GtNum);
yymis.CfStrToVarray(CurYyyh8,v_Yyyh);
yymis.CfStrToVarray(CurLs_Price8,v_Ls_Price);
yymis.CfStrToVarray(CurKl8,v_Kl);
yymis.CfStrToVarray(CurDjdj8,v_Djdj);
yymis.CfStrToVarray(CurDjsl8,v_Djsl); -- 100
yymis.CfStrToVarray(CurYpPym8,v_YpPym);
yymis.CfStrToVarray(CurDjzy8,v_Djzy);
yymis.CfStrToVarray(CurClsBm8,v_ClsBm);
yymis.CfStrToVarray(CurIsZbYp8,v_IsZbYp);
CurOrd:=1;
CurYwJe:=0;

if CurIsLbCash ='T' then --按类别结算
v_FirstClsNum:=yymis.t_Tysl();
v_FirstClsJe:=yymis.t_Tysl();

for r_Spmll in c_Spmll Loop
v_FirstClsNum.Extend(1);
v_FirstClsNum(v_FirstClsNum.Count):=r_Spmll.Cls_Num;
v_FirstClsJe.Extend(1);
v_FirstClsJe(v_FirstClsJe.Count):=0.00;
end Loop;

if v_FirstClsNum.Count < 7 then
for TempInt1 in v_FirstClsNum.Count+1..7 Loop
v_FirstClsNum.Extend(1);
v_FirstClsNum(v_FirstClsNum.Count):='';
v_FirstClsJe.Extend(1);
v_FirstClsJe(v_FirstClsJe.Count):=0.00;
end loop;--for TempInt1 in v_FirstClsNum.Count+1..7 Loop
end if;--if v_FirstClsNum.Count < 7 then
end if;--if CurIsLbCash ='T' then
select count(*) into TempInt1 from Flag where Flag = 2045 and Upper(Meaning)='TRUE';

if TempInt1 > 0 then
CurPrtQdh:='T';
else
CurPrtQdh:='F';
end if;--if TempInt1 > 0 then
if CurPrtQdh ='T' then --表示销售清单不分库区打印
CurVarCk:= yymis.t_Tysl();
for TempInt1 in 1..v_GtNum.Count loop
CurVarCk.Extend(1);
MyStorerToCk(CurDepart,v_GtNum(TempInt1),CurVarCk(CurVarCk.Count));
end Loop;
end if;

if v_YpBh.Count > 0 then
--判断该部门是批发部还是零售
select Count(*) into TempInt1 from flag where (Flag between 1599 and 1700) and Zy=CurDepart;
if TempInt1 > 0 then
IsPfDepart:='F';
else
IsPfDepart:='T';
select count(*) into TempInt1 from Flag where Flag = 2039 and Upper(Meaning)='TRUE';
if TempInt1 > 0 then
CurJxxx:='T';
else
CurJxxx:='F';
end if;--if TempInt1 > 0 then
end if;
if IsPfDepart ='T' then
CurIsYkKhdm:='F';
select count(*) into TempInt1 from flag where flag = 2043 and Upper(Meaning)='TRUE';
if TempInt1 = 0 then --判断移库单位不按无税价结算
select count(*) into TempInt1 from flag where (flag between 1000 and 1099) and Meaning=CurKhdm;
if TempInt1 > 0 then
CurIsYkKhdm:='T';
end if;--if TempInt1 > 0 then
end if;
else
CurIsYkKhdm:='F';
end if;--if IsPfDepart ='T' then
if CurIsYkKhdm ='F' then
if CurXsxz not in (64) then
if v_Param.Count > 4 then --表示最大应收款天数限制
MyValidKhYsk(CurDepart,CurKhdm,CurIsLbCash,CurKprq,v_Param(5),v_Yyyh(1),CurSqlCode,CurSqlErrMsg);
if CurSqlCode <> 0 then
RollBack;
return;
end if;--if CurSqlCode <> 0 then
end if;--if v_Param.Count > 4 then
end if;--if CurXsxz not in (64) then
end if;--if CurIsYkKhdm ='F' then
if IsPfDepart ='T' then
GetNextPzh(CurDjlx,CurDjpzh);
else
GetNextPzh(8000+CurDjlx,CurDjpzh);
end if;
if CurXsxz=67 then
EnabledZeroXssl:=True;
else
EnabledZeroXssl:=False;
end if;--if CurXsxz=67 then
--得到每张清单药品数量
begin
select To_Number(Meaning) into LinesPerPage from flag where flag=613;
exception
when others then
LinesPerPage:=5;
end;
if IsPfDepart = 'F' then --判断整笔业务优惠的情况
CurYwYh:='F';
if v_GtNum.Count > 0 then
TempInt1:=InStr(v_Djzy(1),'
 
呵呵,写这个过程的人是个猪头[:D]
 
顶部