关于oracal过程及语句,自己整理避免遗忘 (二)
----计划需求(新增)
procedure Insertplanning(ids_in in varchar2,---名称---数量---单价--金额
RECIPIENTSDEPARTMENT_in in varchar2,---部门
BZ_in in varchar2,--用途
PLAN_CREATOR_in in varchar2,---建立人
UNUMBER_in in varchar2,--数量
llr_in in varchar2,----领料人
ret_out out varchar2
)
is
inids varchar2(4000);
str_ids varchar2(4000);
strid varchar2(300);
iloc integer;
iloc2 integer;
i integer;
var1 varchar2(50);
var2 varchar2(50);
var3 varchar2(50);
var4 varchar2(50);
-- var5 varchar2(50);
-- var6 varchar2(50);
CODENUMBER_in_N varchar2(50);
begin
ret_out := '-1';
PACK_sys.fn_no_make('JH-','PROGRAM_CODING','B_DEMAND_PLANNING_Z',CODENUMBER_in_N);
insert into B_DEMAND_PLANNING_Z(B_DEMAND_PLANNING,PROGRAM_CODING,PLAN_CREATOR,UNUMBER,PLANTOEDITTIME,
BZ,RECIPIENTSDEPARTMENT,LLR)
values(emp_B_DEMAND_PLANNING_Z.nextval,
CODENUMBER_in_N,
PLAN_CREATOR_in,
UNUMBER_in,
sysdate,
BZ_in,
RECIPIENTSDEPARTMENT_in,
llr_in
);
if ids_in is null then
return;
end if;
inids := ids_in;
if substr(ids_in,length(ids_in),1) <>';' then
inids := inids||';';
end if;
while instr(inids,';',1) > 0 loop
iloc := instr(inids,';',1);
str_ids := substr(inids,1,iloc -1);
if str_ids is not null then
begin
if substr(str_ids,length(str_ids),1) <>',' then
str_ids := str_ids||',';
end if;
i :=1;
var1:='';
var2:='0';
var3:='0';
var4:='0';
-- var5:='0';
-- var6:='0';
while instr(str_ids,',',1) > 0 loop
iloc2 := instr(str_ids,',',1);
strid := substr(str_ids,1,iloc2 -1);
if strid is not null then
if i=1 then var1:=strid;end if;-- id
if i=2 then var2:=strid;end if;-- 数量
if i=3 then var3:=strid;end if;-- 单价
if i=4 then var4:=strid;end if;-- 单价
-- if i=5 then var5:=strid;end if;-- 单价
-- if i=6 then var6:=strid;end if;-- 单价
end if;
str_ids := substr(str_ids,iloc2 +1);
i :=i+1;
end loop;
insert into B_DEMAND_PLANNING_MX values(emp_B_DEMAND_PLANNING_MX.nextval,
emp_B_DEMAND_PLANNING_Z.currval,
var1,
var2,
var3,
var4,
0);
commit;
end;
end if;
inids := substr(inids,iloc +1);
end loop;
commit;
ret_out := '1';
return ;
exception
when others then
rollback;
ret_out :=-1;
return ;
end Insertplanning;
-- 客户详细情况, 输入:客户企业id PROCEDURE CLIENTNAMEDETAILS(sonpeoid_in in integer,myResult out Result ) is begin -- 排序用序号, 企业id, 客户名称, 客户logo open myResult for select a.peoid, a.peoname, 'http://www.buiqu.com:2632'||a.peologo as peologo , a.PEOADDRESS, a.peocreditclass from provideInfo a where ISVALID = 1 and a.peoid = sonpeoid_in ; end CLIENTNAMEDETAILS;
-- 企业授权给客户的商品, 输入:登录企业, 客户企业id
procedure prodtolist(fatherpeoid_in in integer,sonpeoid_in in integer,myResult out Result)
as
begin
-- 商品id,商品名称,计量单位,规格型号,是否有效,授权日期,有效日期,授权说明, 企业销售均价,给销售商价格区间
open myResult for SELECT CLIENTAGENTPROD_ID,
Goods_id,
(SELECT Goodsname FROM Goodsinfo WHERE Goods_id = a.Goods_id) AS Goodsname,
(SELECT Goodsunit FROM Goodsinfo WHERE Goods_id = a.Goods_id) AS Goodsunit,
(SELECT GOODSPEC FROM Goodsinfo WHERE Goods_id = a.Goods_id) AS GOODSPEC,
isvalid,
authordate,
authoreffdate,
authordesc,
(select avg(aprice) from selldetails where Goods_id = a.Goods_id and peoid = fatherpeoid_in) as aprice,
dprice1,
dprice2
FROM clientagentprod a
WHERE peoid = fatherpeoid_in AND
sonpeoid = sonpeoid_in
order by authordate desc;
end prodtolist;
-- 企业授权产品新增
procedure prodtoadd(fatherpeoid_in in integer,
sonpeoid_in in integer,
Goods_id_in in integer,
authoreffdate_in in date,
authordesc_in in varchar2,
dprice1_in in number,
dprice2_in in number,
CLIENTAGENTPROD_ID out integer
)
-- 输入:企业id ,客户id,商品id,有效期,授权说明
-- 输出:成功 返回 表id ,失败或出错 返回 -1
as
icount integer;
icount1 integer;
iGENSTORAGEID integer;
ret_out varchar2(10);
begin
select count(*) into icount from clientagentprod where
peoid = fatherpeoid_in and
sonpeoid = sonpeoid_in and
Goods_id = Goods_id_in;
if icount > 0 then
update clientagentprod set authoreffdate = authoreffdate_in ,
authordesc = authordesc_in
where peoid = fatherpeoid_in and
sonpeoid = sonpeoid_in and
Goods_id = Goods_id_in;
commit;
end if;
IF icount = 0 then
select SEQ_CLIENTAGENTPROD.nextval into CLIENTAGENTPROD_ID from dual;
insert into clientagentprod(
clientagentprod_id,
peoid,
sonpeoid,
Goods_id,
authoreffdate,
AUTHORDATE,
authordesc,
dprice1,
dprice2
)
values(CLIENTAGENTPROD_ID,
fatherpeoid_in,
sonpeoid_in,
Goods_id_in,
authoreffdate_in,
SYSDATE,
authordesc_in,
nvl(dprice1_in,0),
nvl(dprice2_in,0)
);
commit;
end if;
-- 给货位,加入总仓库,数量为0
pack_fx.addgeneralledger(sonpeoid_in,Goods_id_in,ret_out);
return ;
exception
when others then
rollback;
CLIENTAGENTPROD_ID := '-1';
return ;
end prodtoadd;
-- 新增仓库
procedure addgeneralledger(peoid_in in integer,Goods_id_in in integer,ret_out out varchar2)
as
icount integer;
icount1 integer;
iGENSTORAGEID integer;
begin
ret_out :='1';
-- 给货位,加入总仓库,数量为0
select count(*) into icount from generalledger where GOODS_ID = Goods_id_in and PEOID=peoid_in;
if icount = 0 then
select count(*) into icount1 from genstorage where PEOID = peoid_in;
if icount1 > 0 then
select min(GENSTORAGEID) into iGENSTORAGEID from genstorage where PEOID = peoid_in;
else
select seq_genstorage.nextval into iGENSTORAGEID from dual;
insert into genstorage (GENSTORAGEID,GENSTORAGENAME,PEOID,CREDATE)
values(iGENSTORAGEID,'总仓库',peoid_in,sysdate);
commit;
end if;
insert into generalledger (GENERALLEDGER_ID,GOODS_ID,PEOID,GENSTORAGEID,INITNUM,GENQTY,BGENQTY)
values (seq_generalledger.nextval,Goods_id_in,peoid_in,iGENSTORAGEID,0,0,0);
commit;
end if;
return ;
exception
when others then
rollback;
ret_out :='-1';
return ;
end addgeneralledger;
--企业经销或代理的商品列表 procedure GetGoodslistA(peoid_in in integer,myResult out Result) is begin open myResult for select a.PEOID, a.GOODS_ID, b.GOODSNAME, b.GOODSPEC, b.GOODSUNIT from clientagentprod a,goodsinfo b where a.goods_id(+) = b.GOODS_ID and a.SONPEOID =peoid_in and a.ISVALID=1 order by a.CREDATE desc; end GetGoodslistA;
-- 授信金额历史情况 procedure hisclassmoney(fatherpeoid_in in integer,sonpeoid_in in integer,myResult out Result) as begin -- 交易时间,交易金额,首付款,使用授信金额,使用的授信比重(使用授信额度%),当时授信的比重 (授信额度%) open myResult for select ORDERID, firstpaydate, amoney, firstpaymoney, (amoney - firstpaymoney) as redmoney, round((amoney - nvl(firstpaymoney,0.000001)) / nvl(decode(amoney,0,0.0000001),0.0000001) *100,2) as redperce, credpercenum from buyorders where peoid = sonpeoid_in and Goods_id in (select Goods_id from Goodsinfo where peoid = fatherpeoid_in ) order by firstpaydate desc; end hisclassmoney;
-- 包卡发放
procedure packoffersdeposave(packoffers_id_in in integer, -- 包卡id
peoids_in in varchar2, --发放至多个经销商,经销商之间用","相隔
ret_out out varchar2)
as
inids varchar2(3000);
str_id varchar2(20);
iloc integer;
icount integer;
begin
ret_out := '-1';
if peoids_in = '0' or peoids_in is null then
return;
end if;
inids := peoids_in;
if substr(peoids_in,length(peoids_in),1) <>',' then
inids := inids||',';
end if;
-- 先删除 包卡id
delete from packoffersdepo where packoffers_id =packoffers_id_in and getflag <> 1;
commit;
while instr(inids,',',1) > 0 loop
iloc := instr(inids,',',1);
str_id := substr(inids,1,iloc -1);
if str_id is not null then
select count(*) into icount from packoffersdepo where packoffers_id =packoffers_id_in and peoid = str_id;
if icount = 0 then
insert into packoffersdepo (packoffersdepo_id,
packoffers_id,
peoid,
Senddate,
isvalid,
CreDate)
values (seq_packoffersdepo.nextval,
packoffers_id_in,
str_id,
sysdate,
1,
sysdate
);
commit;
end if;
end if;
inids := substr(inids,iloc +1);
end loop;
ret_out := '1';
return ;
exception
when others then
rollback;
ret_out := '-1';
return ;
end packoffersdeposave;
我还是会相信,星星会说话,石头会开花,穿过夏天的栅栏和冬天的风雪过后,你终会抵达。

浙公网安备 33010602011771号