一个用于获取空ID的SQL Server存储过程
来源:互联网 发布:rpc java php 编辑:程序博客网 时间:2024/05/19 04:02
如果有多条记录,删除其中某条记录后,这个ID就被空出来了。如删除2号后,ID就使用了1,3,4,...,而2号空出来了。如果要新增加一条记录,希望使用这个空出来的ID号。以下存储过程可以获得第一个空出来的ID号(仅对SQL Server有效,效率不太好,希望有人能给出更高效的办法):
Create Procedure procGetFirstUnusedID
(@TableName varchar(30), -- 表的名字
@IDName varchar(30), -- ID字段名
@UnusedID int output) -- 输出,第一个未使用的ID
As
Declare @Sql nvarchar(4000)
Declare @Count int,
@Max int
Set @Sql = 'Select @Count=Count(' + @IDName + '),@Max=Max(' + @IDName + ') From ' + @TableName
exec sp_executesql @Sql, N'@Count int output, @Max int output ', @Count output, @Max output
if (@Max is null)
Begin
Set @UnusedID=1
return
End
if (@Max = @Count)
Begin
Set @UnusedID=@Max+1
return
End
Set @Sql = 'Select TempID=Identity(int,1,1),' + @IDName + ' Into #KSTemp From ' + @TableName + ' Order by ' + @IDName + ';'
Set @Sql = @Sql + 'Select top 1 @UnusedID=TempID From #KSTemp Where TempID<' + @IDName + ';'
Set @Sql = @Sql + 'Drop Table #KSTemp;'
execute sp_executesql @Sql, N'@UnusedID int output', @UnusedID output
GO
- 一个用于获取空ID的SQL Server存储过程
- 用于处理树的一个存储过程
- 获取所有SQL Server 2005存储过程的简便方法
- 将 SQL Server 存储过程用于数据访问
- SQL Server中及其有用的一个存储过程
- 浅析SQL SERVER一个没有公开的存储过程
- 一个struts+sql server的分页存储过程
- 一个sql server 2000的分页存储过程
- 浅析SQL SERVER一个没有公开的存储过程
- 一个SQL Server Sa密码破解的存储过程
- 一个向sql server 2005导入excell的存储过程
- SQL Server 一个比较通用的分页存储过程
- SQL Server的存储过程
- sql server的存储过程
- sql server的存储过程
- 用SQL Server编写一个存储过程
- sql server 存储过程中获取另一个存储过程返回的记录集
- sql server 在存储过程中获取自身的存储过程名
- c# 数据结构
- 分类算法要解决的问题(提高运行效率)
- 不要错过爱你的人
- Linux應用軟件安裝幾種方法
- svn 服务端和客户端的使用
- 一个用于获取空ID的SQL Server存储过程
- .net网站
- DNS服務的基本配置
- IMAPISession::OpenMsgStore
- 大型网站网页设计越简单越好
- SQL关于日期类型的操作
- 数据库
- MMU(Memory Management Unit)介绍---摘自百度百科
- DBMS