如何将动态sql中的值存储到变量中?

时间:2014-08-26 23:43:19

标签: sql sql-server

我试图将序列的下一个值存储到变量中,并在动态sql中调用该语句,如下所示。

DECLARE @Sequence VARCHAR(100) = 'IMEIIDLookUP'
DECLARE @NextVal INT
DECLARE @SQL NVARCHAR(4000)

SELECT @SQL = 'SELECT (NEXT VALUE FOR [dbo].' + QUOTENAME(@Sequence) + ')'

SELECT  @NextVal = EXEC (@SQL)

SELECT @NextVal

上述查询失败,错误

  

关键字' EXEC'附近的语法不正确。

这里的语法是什么?话虽如此,我无法避免使用动态sql。

1 个答案:

答案 0 :(得分:3)

使用sp_executesql

DECLARE @Sequence VARCHAR(100) = 'IMEIIDLookUP';
DECLARE @NextVal INT;
DECLARE @SQL NVARCHAR(4000);

SELECT @SQL = 'SELECT @NextVal = (NEXT VALUE FOR [dbo].' + QUOTENAME(@Sequence) + ')';

exec sp_executesql @SQL, N'@NextVal int output', @NextVal = @NextVal output;

SELECT @NextVal;