我这是一个生成单据编码的存储过程,
有一个单据编号表如下:
(单据类型)    名称   当前编号
djlx          djmc        dqbh
'1'           名称     c0000001我传一个类型'1',存储过程想反回一个c0000002,然后表的当前编号加1,下次反回c0000003,现在只是返回c3,在字符转数值的时候把0扔掉了,怎么才能让他占位啊?CREATE    PROCEDURE dp_djbh  @ls_djlx varchar(1),
@ls_djbh varchar(8) output,
@li_rtn   integer output,
@ls_msg varchar(100) output
ASBEGINdeclare @as_djbh  varchar(8)
declare @an_djbh  numeric(7,0)
    if @ls_djlx='1'
    begin
select @as_djbh=dqbh from jc_djbh where lxbh='1'
if @@error<>0
    begin
       set @li_rtn=-1
       set @ls_msg='数据库初始化错误,没有找到此数据编码生成记录'
       return
     end
        set @an_djbh=convert(numeric(7,0),right(@as_djbh,7))+1
        set @ls_djbh='C'+convert(varchar(8),convert(varchar (7),@an_djbh))
    end
   END
GO

解决方案 »

  1.   

    declare @an_djbh  numeric(7,0)
    set @an_djbh=0000002 
    select 'C'+convert(varchar(8),@an_djbh)
    select replace(STR( @an_djbh +1 ,7,0),' ','0')结果一  C2
    结果二 0000003
    可以做个参考。呵呵。
      

  2.   

    CREATE    PROCEDURE dp_djbh  @ls_djlx varchar(1),
    @ls_djbh varchar(8) output,
    @li_rtn   integer output,
    @ls_msg varchar(100) output
    ASBEGINdeclare @as_djbh  varchar(8)
    declare @an_djbh  numeric(7,0)
        if @ls_djlx='1'
        begin
    select @as_djbh=dqbh from jc_djbh where lxbh='1'
    if @@error<>0
        begin
           set @li_rtn=-1
           set @ls_msg='数据库初始化错误,没有找到此数据编码生成记录'
           return
         end
            set @an_djbh=convert(numeric(7,0),right(@as_djbh,7))+1
            set @ls_djbh='C'+right('0000000'+convert(varchar(7),@an_djbh),7)    end
       END
    GO
    原先方法不行是因为set @an_djbh=convert(numeric(7,0),right(@as_djbh,7))+1返回成2了