如何 运行 来自存储过程的序列?
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
我正在尝试 运行 来自存储过程的序列。我将序列名称传递给存储过程,存储过程将 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