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

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

在对数据库编程的过程中,许多人经常会用一个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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航