服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

如何获取指定表中指定字段内的可用编号

【赛迪网-it技术报道】在对数据库编程的过程中,许多人经常会用一个id列标记该记录的信息。但获得一个可用的编号后经常需要频繁的查找以使编号不被打断,本文将主要介绍一个解决此问题的示例,具体内容请参考下文:

/*
过程名 getnum
功能:  取得指定表的下一个可用的编号
输入参数:   @tablname 表名
@fileldname 即要查询的字段名.在不同的表编号所写的列名不是一样的.如有id num等
@num 返回下一个可用的编号  
*/
create procedure dbo.getnum  
@tablname varchar(8),
@fileldname varchar(8),
@num  varchar(6) output
as
declare @sql  varchar(200)
declare @oldnum int,@newnum varchar(6)
set @sql=''  
set @sql='declare mycursor cursor for   select '+ rtrim(@fileldname) + 
' from ' + rtrim(@tablname) 
exec(@sql)
if @@error=0
begin
set  @oldnum=1
open mycursor
fetch next from mycursor into @newnum
while @@fetch_status=0
begin
if replicate(0,3-len(@oldnum))+cast(@oldnum as varchar) = @newnum 
set @oldnum=@oldnum+1
else
begin 
set @num=replicate(0,3-len(@oldnum))+cast(@oldnum as varchar) 
return  
end
fetch next from mycursor into @newnum 
end
close mycursor
deallocate mycursor
set @num=replicate(0,3-len(@oldnum))+cast(@oldnum as varchar) 
--如果顺序没有被打断
return
end   
else
raiserror
('该表或列名不存在.请检查输入的表名和列名是否正确?',7,1)
go

扫描关注微信公众号