我试图将序列的下一个值存储到变量中,并在动态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。
答案 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;