自动编号2

SQL存储过程示例
ALTER PROCEDURE [dbo].[GetbmProduct] @tablename nvarchar(250),@bmzd nvarchar(250),
@bmstr nvarchar(250),@idstr nvarchar(20)
As
      
declare @maxnumber nvarchar(50)
      
declare @tabelname1 nvarchar(50)
       
declare @bmzd1 nvarchar(50)
       
declare @bmstr1 nvarchar(50)
      
declare @sqlstr nvarchar(500)
      
declare @ParmDefinition nvarchar(200)
      
declare @idstr1 nvarchar(20)
      
declare @sparam varchar(100)
      
declare @TODAY char(8)
          
select @TODAY=''---right(convert(char(8),getdate(),112),6)
      set @maxnumber = 0
      
set @tabelname1 = @tablename
      
set @bmzd1 = @bmzd
      
set @bmstr1=@bmstr

      
set @idstr1=@idstr
set @sparam = @bmstr1  + replace(@idstr1'0''[0-9]')

set @sqlstr = N'select Top 1 @maxd='+@bmzd1+'  from '+@tabelname1+' where '+@bmzd1+' like '''+@sparam+'''  and len('+@bmzd1+')=len('''+@bmstr1+''')+len('''+@idstr1+''') order by '+@bmzd1+' desc'
SET @ParmDefinition = N'@maxd  nvarchar(250) output'
EXECUTE sp_executesql @sqlstr@ParmDefinition,@maxd =@maxnumber output

if @maxnumber is null or left(@maxnumber,(len(@bmstr)))<>@bmstr
        
begin
            
select @maxnumber=@bmstr+@idstr1--'000000'
        end
select @maxnumber=left(@maxnumber,(len(@bmstr)))+ right(@idstr1 + ltrim(convert(char(20),convert(int,right(@maxnumber,len(@idstr1))))+1),len(@idstr1))
select number=@maxnumber


转载于:https://www.cnblogs.com/ssihc/archive/2008/02/16/1391463.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值