--1---------------------------- begin tran go insert into 作业项目表 values('zy2016006','112202002','y005', 10000,'张三', '07-01-2016' ,'07-04-2016','07-25-2016', '作业公司作业一队','堵漏',7000,2500,1000,1400,11900, '李四','07-26-2016',11900,'王五','07-28-2016') insert into 材料费表 values('zy2016006','wm001',200,10) insert into 材料费表 values('zy2016006','wm002',200,10) insert into 材料费表 values('zy2016006','wm003',200,10) insert into 材料费表 values('zy2016006','wm004',100,10) if @@error<>0 begin print '语句执行失败' rollback end else begin print '语句执行成功' commit end --2--------------------------------- begin tran declare yb cursor for select * from 作业项目表 open yb declare @单据号 varchar(20) declare @预算单位 varchar(20) declare @井号 varchar(20) declare @预算金额 varchar(20) declare @预算人 varchar(20) declare @预算日期 varchar(20) declare @开工日期 varchar(20) declare @完工日期 varchar(20) declare @施工单位 varchar(20) declare @施工内容 varchar(20) declare @材料费 varchar(20) declare @人工费 varchar(20) declare @设备费 varchar(20) declare @其它费用 varchar(20) declare @结算金额 varchar(20) declare @结算人 varchar(20) declare @结算日期 varchar(20) declare @入账金额 varchar(20) declare @入账人 varchar(20) declare @入账日期 varchar(20) print '单据号 '+ '预算单位 '+ '井号 '+ '预算金额 '+ '预算人 '+ '预算日期 '+ '开工日期 '+ '完工日期 '+ '施工单位 '+ '施工内容 '+ '材料费 '+ '人工费 '+ '设备费 '+ '其它费用 '+ '结算金额 '+ '结算人 '+ '结算日期 '+ '入账金额 '+ '入账人'+ '入账日期' fetch next from yb into @单据号, @预算单位 , @井号 , @预算金额 , @预算人 , @预算日期, @开工日期 , @完工日期 , @施工单位 , @施工内容 , @材料费 , @人工费 , @设备费 , @其它费用, @结算金额 , @结算人 , @结算日期, @入账金额 , @入账人 , @入账日期 while(@@fetch_status = 0) begin print @单据号 +' '+ @预算单位 +' '+ @井号 +' '+ @预算金额 +' '+ @预算人 +' '+ @预算日期 +' '+ @开工日期 +' '+ @完工日期 +' '+ @施工单位 +' '+ @施工内容 +' '+ @材料费 +' '+ @人工费 +' '+ @设备费 +' '+ @其它费用 +' '+ @结算金额 +' '+ @结算人 +' '+ @结算日期 +' '+ @入账金额 +' '+ @入账人 +' '+ @入账日期 fetch next from yb into @单据号, @预算单位 , @井号 , @预算金额 , @预算人 , @预算日期, @开工日期 , @完工日期 , @施工单位 , @施工内容 , @材料费 , @人工费 , @设备费 , @其它费用, @结算金额 , @结算人 , @结算日期, @入账金额 , @入账人 , @入账日期 ; end --3---------------------------------- if object_id('_someDepCost','p') is not null drop procedure _someDepCost; go create procedure _someDepCost @单位代码 varchar(40), @起始日期 datetime, @结束日期 datetime as declare @单位名称 varchar(40); declare @预算金额 money, @结算金额 money, @入账金额 money, @未结算金额 money, @未入账金额 money; select @单位名称 = 单位名称 from 单位代码表 where 单位代码 = @单位代码 set @预算金额 = (select sum(预算金额) from 作业项目表 where 预算单位 like @单位代码 + '%' and (预算日期 between @起始日期 and @结束日期)) set @结算金额 = (select sum(结算金额) from 作业项目表 where 预算单位 like @单位代码 + '%' and (结算日期 between @起始日期 and @结束日期)) set @入账金额 = (select sum(入账金额) from 作业项目表 where 预算单位 like @单位代码 + '%' and (入账日期 between @起始日期 and @结束日期) and (入账金额 is not null)) set @未结算金额 = (select sum(预算金额) from 作业项目表 where (结算金额 is null) and (预算日期 between @起始日期 and @结束日期)) set @未入账金额 = (select sum(结算金额) from 作业项目表 where (入账金额 is null) and (结算日期 between @起始日期 and @结束日期)) set @未结算金额 = @预算金额 - @结算金额 set @未入账金额 = @结算金额 - @入账金额 if @预算金额 is null set @预算金额 = 0 if @结算金额 is null set @结算金额 = 0 if @入账金额 is null set @入账金额 = 0 if @未结算金额 is null set @未结算金额 = 0 if @未入账金额 is null set @未入账金额 = 0 declare @result varchar(100) set @result = convert(varchar,@预算金额)+' '+convert(varchar,@结算金额)+ ' '+convert(varchar,@入账金额)+' '+convert(varchar,@未结算金额)+' '+convert(varchar,@未入账金额) print @单位名称+'单位'+convert(varchar,@起始日期,102)+'--'+convert(varchar,@结束日期,102)+'成本运营状况' print '预算金额 结算金额 入账金额 未结算金额 未入账金额' print @result go execute _someDepCost @单位代码 = '1122',@起始日期 = '2016-5-1',@结束日期 = '2016-5-29'; execute _someDepCost @单位代码 = '112201',@起始日期 = '2016-5-1',@结束日期 = '2016-5-29'; execute _someDepCost @单位代码 = '112201001',@起始日期 = '2016-5-1',@结束日期 = '2016-5-29'; go --4--------------------------------------------- --(1)---------------------------- if OBJECT_ID('trmytr1','TR') is not null drop trigger tr_mytrl go create trigger trmytr1 on 作业项目表 after insert as declare @结算金额 money declare @temp1 money,@temp2 money,@temp3 money,@temp4 money; select @temp1 = 材料费,@temp2 = 人工费,@temp3 = 设备费,@temp4 = 其他费用 from inserted; set @结算金额 = @temp1+@temp2+@temp3+@temp4; update 作业项目表 set 结算金额 = @结算金额 where 单据号 = (select 单据号 from inserted); go --(2)--------------------------------------------- if OBJECT_ID('trmytr2','TR') is not null drop trigger tr_mytr2 go create trigger trmytr2 on 作业项目表 after update as declare @结算金额 money declare @temp1 money,@temp2 money,@temp3 money,@temp4 money; select @temp1 = 材料费,@temp2 = 人工费,@temp3 = 设备费,@temp4 = 其他费用 from inserted; set @结算金额 = @temp1+@temp2+@temp3+@temp4; update 作业项目表 set 结算金额 = @结算金额 where 单据号 = (select 单据号 from inserted); go --(3)---------------------------------- if OBJECT_ID('trmytr3','TR') is not null drop trigger tr_mytr3 go create trigger trmytr3 on 作业项目表 instead of delete as delete from 材料费表 where 单据号 = (select 单据号 from deleted); --(4)------------------------ begin tran /*(1)*/ insert into 作业项目表(单据号,预算人,材料费,人工费,设备费,其他费用) values('2017000','test',100,200,300,400); delete from 作业项目表 where 单据号 = '2017000'; /*(2)*/ insert into 作业项目表(单据号,预算人,材料费,人工费,设备费,其他费用) values('2017111','test',100,200,300,400); update 作业项目表 set 材料费 = 100000 where 单据号 = '2017111'; /*(3)*/insert into 作业项目表(单据号,预算人,材料费,人工费,设备费,其他费用) values('2017110','test',100,200,300,400); insert into 材料费表 values('2017110','wm001'); select 单据号,物码 from 材料费表; delete from 作业项目表 where 单据号 = '2017110'; select 单据号,物码 from 材料费表 rollback
数据库实验六
猜你喜欢
转载自blog.csdn.net/qq_38717135/article/details/80048600
今日推荐
周排行