如何 运行 来自存储过程的序列?

How to run to a sequence from stored procedure?

我正在尝试 运行 来自存储过程的序列。我将序列名称传递给存储过程,存储过程将 return 序列值,但存储过程无法识别传递的序列名称。错误说:

Incorrect syntax near '@SeqName'.

这是我尝试过的方法:

ALTER PROCEDURE [dbo].[GetSeqNextValue] 
   (@SeqName varchar(50), @NewNum bigint output) 
AS
BEGIN
    SET @NewNum = NEXT VALUE FOR @SeqName
END

您在这里需要一些动态查询:

DECLARE @s NVARCHAR(100) =  'SET @NewNum = NEXT VALUE FOR ' + QUOTENAME(@SeqName)
EXEC sp_executesql @s, N'@NewNum bigint output', @NewNum OUTPUT

您可以将程序更改为 .

ALTER PROCEDURE [dbo].[GetSeqNextValue] (@SeqName varchar(50), @NewNum bigint output) 

AS

BEGIN
  Declare  @SQL  Nvarchar(1000)

  Set @SQL  = 'SELECT @NewNum = Next Value for ' + @SeqName 
  Exec sp_executesql @Sql,N'@NewNum bigint output',@NewNum output 


END