Sql server 如何在SQL Server中将值设置为声明的变量

Sql server 如何在SQL Server中将值设置为声明的变量,sql-server,sql-server-2012,sequences,Sql Server,Sql Server 2012,Sequences,如何在SQL Server中将值设置为声明的变量 DECLARE @V_SEQUENCE INT, @V_SEQUENCENAME NVARCHAR(MAX); SET @V_SEQUENCENAME = 'dbo.MYSEQ'; EXEC('SELECT @V_SEQUENCE = NEXT VALUE FOR ' + @V_SEQUENCENAME) SELECT @V_SEQUENCE 这里我得到一个错误: 必须声明标量变量@V_SEQUENCE' 请告诉我如何获得@V_序列

如何在SQL Server中将值设置为声明的变量

DECLARE  @V_SEQUENCE INT,  @V_SEQUENCENAME NVARCHAR(MAX);
SET @V_SEQUENCENAME = 'dbo.MYSEQ';   
EXEC('SELECT @V_SEQUENCE = NEXT VALUE FOR  ' + @V_SEQUENCENAME)
SELECT @V_SEQUENCE
这里我得到一个错误:

必须声明标量变量@V_SEQUENCE'


请告诉我如何获得@V_序列的结果。

您想从execute中传递一个值。我建议您使用sp_executesql:


您希望从execute中传递一个值。我建议您使用sp_executesql:


如果序列名称是常量,则不需要动态sql。序列名称是动态的,例如我提到的静态名称。如果序列名称是常量,则不需要动态sql。序列名称是动态的,例如我提到的静态名称。谢谢,现在我得到了预期的结果。谢谢,现在我得到了预期的结果。
DECLARE  @V_SEQUENCE INT, @V_SEQUENCENAME NVARCHAR(MAX), @SQL NVARCHAR(MAX);
SET @V_SEQUENCENAME = 'dbo.MYSEQ'; 
SELECT @SQL = 'SELECT @V_SEQUENCE = NEXT VALUE FOR  ' + @V_SEQUENCENAME;

EXEC sp_executesql @SQL, N'@V_SEQUENCE INT OUTPUT', @V_SEQUENCE = @V_SEQUENCE OUTPUT;

SELECT @V_SEQUENCE;