只知道这个存储过程是用来产生单据流水编码的,但是不知道怎么调用和接收返回结果。请大家帮分析分析。
************************************************************************************************
CREATE PROCEDURE GenerateBillCode
@TableName varchar(100),
@Date varchar(10),
@Count int,
@BillCode varchar(8000) out
AS
--GenerateBillCode Stored Procedure
--L_BuildType Table
--2004-07-17
--declare @TableName varchar(100),
-- @FieldName varchar(100),
-- @Date varchar(20),
-- @Count int,
-- @BillCode varchar(4000) --out
--select @tablename='i_combin',@FieldName='billcode',@Date='2004-1-5',@Count = 10
declare @FieldName varchar(40)
select @FieldName = 'BillCode'
declare @Code varchar(20),@Head varchar(20),@Mode varchar(20),@Sepa varchar(10),
@SqlString nvarchar(255),@DecCode int,@NewBillCode varchar(100),
@LeadString varchar(100),@BillCodeList varchar(8000),@idx int
if @TableName is null or @TableName = ''
begin
select @BillCode = ''
raiserror('无效的表名',16,1)
return
end
if not exists(select * from sysobjects where sysobjects.name=@TableName)
begin
select @BillCode = ''
raiserror('无效的表名:%s',16,1,@TableName)
return;
end
if not exists(select * from syscolumns inner join sysobjects on syscolumns.id = sysobjects.id
where sysobjects.name=@TableName and syscolumns.name=@FieldName)
begin
select @BillCode = ''
raiserror('无效的字段名:%s',16,1,@FieldName)
return;
end
if @Count is null or @Count < 1
begin
select @BillCode = ''
raiserror('单据编号数量必须大于等于1',16,1)
return
end
--以下代码读取编码方案
select @Code = Code,@Head = Head,@Mode = Mode,@Sepa = Sepa from L_BillType where TableName=@TableName
if @@rowcount = 0
begin
raiserror('表: %s 未注册为系统编号',16,1,@TableName)
return
end
select @DecCode = 1, @NewBillCode = '', @LeadString = '', @BillCodeList = '', @idx = 0
if @Mode = '年'
select @LeadString = @Head + @Sepa + convert(varchar(4),year(@Date)) + @Sepa
else if @Mode = '年月'
select @LeadString = @Head + @Sepa + convert(varchar(4),year(@Date)) + @Sepa +
replicate('0',2 - len(convert(varchar(2),month(@Date)))) + convert(varchar(2),month(@Date)) + @Sepa