游标之数据排序

由于在写“协同平台”要将主、细表的里内容在一个里进有序排序,本人认为最好用存储过程来实现,这样可以提高客户端的浏览速度         ^_^
None.gifCREATE            PROCEDURE Aipetech_sp_PoOrderExeStatus
None.gif
@InterID int
None.gif 
AS
None.gif
--创建一个临时表,用来生成"未完采购订单的执行情况"
None.gif

None.gif
Create Table #Aipetech_T002
None.gif    (
None.gif    采购订单内码 
int,
None.gif    分录号 
int,
None.gif    物料内码 
int,
None.gif    物料编码 
varchar(80),
None.gif    物料名称 
varchar(80),
None.gif    收货日期 
datetime,
None.gif    入库单号 
varchar(80),
None.gif    单位 
varchar(30),
None.gif    数量 
decimal(13),
None.gif    入库数量 
decimal(13default 0,
None.gif    未完成数量 
decimal(13default 0,
None.gif    交货日期 
datetime,
None.gif    备注 
varchar(255)
None.gif    )
None.gif
None.gif
insert into #Aipetech_T002
None.gif            (采购订单内码,分录号,物料内码,物料编码,物料名称,单位,数量,交货日期,备注)
None.gif            
select 采购订单内码,分录号,物料内码,物料编码,物料名称,单位,数量,交货日期,备注 from Aipetech_v_PoOrderEntry where 采购订单内码=@InterID
None.gif
--select * from #Aipetech_T002
None.gif
Create Table #Aipetech_T003
None.gif    (
None.gif    采购订单内码 
int,    
None.gif    物料内码 
int,
None.gif    入库数量 
int)
None.gif
None.gif
insert into #Aipetech_T003
None.gif    (采购订单内码,物料内码,入库数量)
None.gif
select 采购订单内码,物料内码,sum(辅助实收数量) as 辅助实收数量   from aipetech_v_icstockbill where ((采购订单内码=@InterIDand(入库单号 LIKE 'win%')) group by 物料内码,采购订单内码
None.gif
None.gif
--select * from #Aipetech_T003
None.gif

None.gif
--计算入库数量
None.gif
update #Aipetech_T002 set 入库数量=A003.入库数量 from #aipetech_t003 a003,#aipetech_t002 a002 where a002.物料内码=a003.物料内码
None.gif
None.gif
--计算未完成数量
None.gif
update #Aipetech_T002 set 未完成数量=数量-入库数量
None.gif
None.gif
insert into #Aipetech_T002
None.gif            (物料名称,入库数量,未完成数量)
None.gif            
select '合计:',sum(入库数量),sum(未完成数量) from #Aipetech_t002
None.gif
None.gif
None.gif
--select 采购订单内码,分录号,物料内码,物料编码,物料名称,入库单号,收货日期,单位,数量,入库数量,未完成数量,交货日期,备注 from #Aipetech_t002 a002
None.gif--
union
None.gif--
select 采购订单内码,1,物料内码,null,null,入库单号,单据日期,null,null,辅助实收数量,null,null,null from aipetech_v_icstockbill avi where ((采购订单内码=@InterID) and(入库单号 LIKE 'win%'))
None.gif--
order by 分录号 
None.gif

None.gif
None.gif
--以下用游标来进行主细表的记录增加到#Aipetech_T004表中
None.gif
Create Table #Aipetech_T004
None.gif    (
None.gif    采购订单内码 
int,
None.gif    分录号 
int,
None.gif    物料内码 
int,
None.gif    物料编码 
varchar(80),
None.gif    物料名称 
varchar(80),
None.gif    收货日期 
datetime,
None.gif    入库单号 
varchar(80),
None.gif    单位 
varchar(30),
None.gif    数量 
decimal(13),
None.gif    入库数量 
decimal(13default 0,
None.gif    未完成数量 
decimal(13default 0,
None.gif    交货日期 
datetime,
None.gif    备注 
varchar(255)
None.gif    )
None.gif
None.gif
declare @T1 int,@T2 int,@T3 int,@T4 varchar(80),@T5 varchar(80),@T6 datetime,@T7 varchar(80),
None.gif
@T8 varchar(30),@T9 decimal(13),@T10 decimal(13),@T11 decimal(13),@T12 datetime,@T13 varchar(255)
None.gif
None.gif
declare A_T004_cur scroll cursor for select * from #Aipetech_T002
None.gif
open A_T004_cur
None.gif
Fetch first from A_T004_cur into @T1,@T2,@T3,@T4,@T5,@T6,@T7,@T8,@T9,@T10,@T11,@T12,@T13
None.gif
None.gif
while @@fetch_status=0
None.gif
begin
None.gif
insert into #Aipetech_T004 values(@T1,@T2,@T3,@T4,@T5,@T6,@T7,@T8,@T9,@T10,@T11,@T12,@T13)
None.gif
insert into #Aipetech_T004
None.gif
select 采购订单内码,@T2,物料内码,物料代码,物料名称,单据日期,入库单号,@T8,null,辅助实收数量,null,null,null from aipetech_v_icstockbill avi where ((采购订单内码=@InterIDand(入库单号 LIKE 'win%')and (物料内码=@T3))
None.gif
Fetch next from A_T004_cur into @T1,@T2,@T3,@T4,@T5,@T6,@T7,@T8,@T9,@T10,@T11,@T12,@T13
None.gif
end
None.gif
None.gif
close A_T004_cur
None.gif
deallocate A_T004_cur
None.gif
None.gif
None.gif
--select * from #aipetech_t002
None.gif

None.gif
select * from #Aipetech_T004
None.gif
--select 采购订单内码,1,物料内码,null,null,入库单号,单据日期,null,null,辅助实收数量,null,null,null from aipetech_v_icstockbill avi where ((采购订单内码=@InterID) and(入库单号 LIKE 'win%'))
None.gif

None.gif
None.gif
Drop Table #Aipetech_T002
None.gif
Drop Table #Aipetech_T003
None.gif
Drop Table #Aipetech_T004
None.gif
GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值