具体存储过程为(一同事提供)/*获取指定内码的最大值
@IDName 内码名称
@GetIDNum 获取内码数目
*/CREATE PROCEDURE dbo.gqsp_GetNextID 
@IDName varchar(50),
@GetIDNum int
AS
declare
@returnID int,
@recordCount int
begin
if len(@IDName)<1 GOTO err_deal
if(@GetIDNum<1) GOTO err_deal
--关闭返回提示信息
SET NOCOUNT ON

--初始化返回值为0
SET @returnID =-1

--开始事务
begin transaction --判断内码是否存在
select @recordCount=Count(*) FROM T_LandMax WHERE IDName = @IDName
if(@recordCount=0) 
BEGIN
RAISERROR(N'请求获取的内码不存在!',16,-1)
goto err_deal
END --等待直至请求的内码可读取
WHILE @returnID<1
BEGIN
--查询时对行锁定,以保证数据正确
SELECT @returnID=NextVal FROM T_LandMax  WITH (ROWLOCK,READPAST,UPDLOCK) WHERE IDName=@IDName
if(@@error<>0) goto err_deal
END

if (@returnID IS NULL) OR @returnID < 1 GOTO err_deal

--更新最大值至另一个值
UPDATE T_LandMax SET NextVal=NextVal + @GetIDNum  
WHERE IDName=@IDName and NextVal=@returnID
if @@error<>0  GOTO err_deal
COMMIT TRANSACTION

--作为记录集返回
SELECT @returnID
RETURNerr_deal:
ROLLBACK TRANSACTION
--返回记录集的值为-1表示获取失败
SELECT -1
END
GO