日期:2014-05-19  浏览次数:20535 次

求一存储过程!做了半天没做出来,谢谢各位了
我有一个表“类目表”有2个字段ID(标志,自动增长),code(varchar)
假如开始表中有几行数据code分别为01,0101,0102,0103
我想写一个存储过程,参数有一个,为@code   varchar
实现,输入则在表中添加数据0104,(相当于字段code以2个位为一个层,01层下有0101     0102   0103)在01层下根据后面两位最大值+1则为新值
再输入01的话则在0104基础上+1为0105
输入0101的话,则插入010101,再输入0101则在010101基础上加1得到010102
不知道我说清楚了没有,谢谢各位指教了!


------解决方案--------------------
create table T(ID int identity, code varchar(20))
go
insert T select '01 '
insert T select '0101 '
insert T select '0102 '
insert T select '0103 '
go


create proc pc
@code varchar(20)
as

declare @newCode varchar(20)
select @newCode=max(code) from T
where code like @code+ '% ' and len(code)> len(@code)

if @newCode is null
set @newCode=@code+ '01 '
else
set @newCode= '0 '+rtrim(cast(@newCode as int)+1)

insert T(code) select @newCode
go


exec pc '01 '
exec pc '01 '
exec pc '0101 '
exec pc '0101 '

------解决方案--------------------
create procedure a @code varchar(100) as
declare @a int
declare @b varchar(100)
select @a = len(@code)
if exists (select code from 类目表 where left(code,@a)=@code)
select @b = max(code)+1 from 类目表 where left(code,@a)=@code
else
select @b = @code+ '01 '
insert into 类目表 values (@b)
go