批量生成的sql

alter Procedure Asset_spQueryChargePlan
(
 @pi_ContractCode varchar(100),
 @pi_StartTime datetime,  --开始时间
 @pi_Interval bigint,    --间隔月数
 @pi_PlanItems bigint, --生成的笔数
 @pi_Cost money,         --费用
 @pi_InAdvanceDay int    --提前的天数
)
as
declare @pt_tbAll table(ShouldGetDate datetime,CostStartDate datetime,CostEndDate datetime,SumMoney money)
declare @pt_RendEndDate datetime --合同结束时间
declare @pt_amount int           --合同一个有多少笔
declare @pt_i int                --生成的笔数
declare @pt_ShouldGetDate datetime --提前的天数
declare @pt_Enddate datetime       --终止日期

 

select @pt_RendEndDate=RendEndDate from Asset_Contract where ContractCode=@pi_ContractCode
print @pt_RendEndDate
if @pt_RendEndDate is not null
 begin
 set @pt_amount=datediff(month,@pi_StartTime,@pt_RendEndDate)
print @pt_amount
if (@pt_amount%@pi_Interval)>0
set @pt_i=(@pt_amount/@pi_Interval)+1
else
set @pt_i=@pt_amount/@pi_Interval
print @pt_i
 if @pi_PlanItems<=@pt_i
  begin

   while @pi_PlanItems>=1
   begin
   set @pt_ShouldGetDate=dateadd(day,-20,@pi_StartTime)
   set @pt_Enddate=dateadd(month,@pi_Interval,@pi_StartTime)
   if  @pt_Enddate>@pt_RendEndDate
   set @pt_Enddate=@pt_RendEndDate
   insert into @pt_tbAll(ShouldGetDate,CostStartDate,CostEndDate,SumMoney)values(@pt_ShouldGetDate,@pi_StartTime,@pt_Enddate,@pi_Cost)
   set @pi_PlanItems=@pi_PlanItems-1
   set @pi_StartTime=dateadd(month,@pi_Interval,@pi_StartTime)
   end
  end
 end


select * from @pt_tbAll
go
exec Asset_spQueryChargePlan '10000120','2012/3/28',3,4,12000,20
go

 

posted @ 2012-03-29 18:33  浅谈生活  阅读(169)  评论(0编辑  收藏  举报