我正在尝试从存储过程运行序列。我将序列的名称传递给存储过程,存储过程将返回序列值,但存储过程不识别传递的序列名称。错误说:
' @ SeqName'附近的语法不正确。
以下是我的尝试:
ALTER PROCEDURE [dbo].[GetSeqNextValue]
(@SeqName varchar(50), @NewNum bigint output)
AS
BEGIN
SET @NewNum = NEXT VALUE FOR @SeqName
END
答案 0 :(得分:3)
您需要一些动态查询:
DECLARE @s NVARCHAR(100) = 'SET @NewNum = NEXT VALUE FOR ' + QUOTENAME(@SeqName)
EXEC sp_executesql @s, N'@NewNum bigint output', @NewNum OUTPUT
答案 1 :(得分:2)
你可以改变你的程序。
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