我这是一个生成单据编码的存储过程,
有一个单据编号表如下:
(单据类型) 名称 当前编号
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
有一个单据编号表如下:
(单据类型) 名称 当前编号
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
set @an_djbh=0000002
select 'C'+convert(varchar(8),@an_djbh)
select replace(STR( @an_djbh +1 ,7,0),' ','0')结果一 C2
结果二 0000003
可以做个参考。呵呵。
@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了