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

浏览:28日期:2023-09-05
在对数据库编程的过程中,许多人经常会用一个ID列标记该记录的信息。但获得一个可用的编号后经常需要频繁的查找以使编号不被打断,本文将主要介绍一个解决此问题的示例,具体内容请参考下文:

/*过程名 getNum功能: 取得指定表的下一个可用的编号输入参数: @tablName 表名@FileldName 即要查询的字段名.在不同的表编号所写的列名不是一样的.如有ID Num等@Num 返回下一个可用的编号 */CREATE PROCEDURE dbo.getNum @tablName VARCHAR(8),@FileldName VARCHAR(8),@Num VARCHAR(6) OUTPUTASDECLARE @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=0BEGINSET @oldNum=1OPEN MycursorFETCH NEXT FROM Mycursor INTO @newNumWHILE @@FETCH_STATUS=0BEGINIF REPLICATE(0,3-LEN(@oldNum))+CAST(@oldNum AS VARCHAR) = @newNum SET @oldNum=@oldNum+1ELSEBEGIN SET @Num=REPLICATE(0,3-LEN(@oldNum))+CAST(@oldNum AS VARCHAR) RETURN ENDFETCH NEXT FROM Mycursor INTO @newNum ENDCLOSE MycursorDEALLOCATE MycursorSET @Num=REPLICATE(0,3-LEN(@oldNum))+CAST(@oldNum AS VARCHAR) --如果顺序没有被打断RETURNEND ELSERAISERROR('该表或列名不存在.请检查输入的表名和列名是否正确?',7,1)GO

相关文章: