当前位置: 代码迷 >> Delphi >> 刚学存储过程,请教这个存储过程如何调用
  详细解决方案

刚学存储过程,请教这个存储过程如何调用

热度:9265   发布时间:2013-02-25 00:00:00.0
刚学存储过程,请问这个存储过程怎么调用?
只知道这个存储过程是用来产生单据流水编码的,但是不知道怎么调用和接收返回结果。请大家帮分析分析。
************************************************************************************************


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
  相关解决方案