USE db_sell GO CREATE procedure P_ruku @pzs int, --用于接收商品种数 @je money, --用于接收入库金额 @sf money, --用于接收实付金额 @gysname varchar(100), --用于接收供应商名称 @date datetime, --用于接收入库日期 @operator varchar(30), --用于接收操作员 @jsr varchar(30), --用于接收经手人 @jsfs varchar(10), --用于接收结算方式 @rukuid varchar(30) output --用于输出入库编号 as begin Declare @temp varchar(30) --提取游标中的数据 set @rukuid = 'RK'+ Convert(varchar(20),Year(@date)) if Month(@date)<10 --将月格式化为两位数字 set @rukuid = @rukuid +'0'+ Convert(varchar(20),Month(@date)) else set @rukuid = @rukuid+Convert(varchar(20),Month(@date)) if Day(@date)<10 --将日格式化为两位数字 set @rukuid = @rukuid +'0'+ Convert(varchar(20),Day(@date)) else set @rukuid = @rukuid+Convert(varchar(20),Day(@date)) --声明一个局部游标用于提取当前日期的最大入库编号 declare fetch_MaxPh Cursor LOCAL Scroll for select Max(rkid) from tab_ruku_main where rkdate>= FLOOR(Convert(Float,@date)) and rkdate<Floor(Convert (Float,@date))+1 if CURSOR_STATUS('local','fetch_Maxph')= -1 --如果游标未打开,则打开游标 Open fetch_Maxph Fetch first from fetch_Maxph into @temp Close fetch_Maxph Declare @Id Int if @temp is NUll begin set @rukuid = @rukuid+'001' end else begin --确定入库编号后3位数字的显示格式 set @id = Convert(int,SUBSTRING(Rtrim(@temp),11,10)) if @id <9 set @rukuid = @rukuid +'00'+Convert(varchar(20),@id+1) else if @id <99 set @rukuid = @rukuid +'0'+Convert(varchar(20),@id+1) else set @rukuid = @rukuid + Convert(varchar(20),@id+1) end --将接收到的数据添加到tab_ruku_main表中 insert into tab_ruku_main values (@rukuid,@pzs,@je,@sf, @gysname,@date,@operator,@jsr,@jsfs) end GO |