是否可以在动态语句中使用@@ROWCOUNT
之类的SQL Server系统函数?
我试图这样做却失败了:
USE NORTHWIND
SELECT * FROM Customers
EXEC ('SELECT ''RowCount is equal to ''' + CONVERT(varchar(10), @@ROWCOUNT))
它为我提供了“关键字'CONVERT'附近的语法错误”错误。
答案 0 :(得分:2)
你可以这样做,但你不能直接在EXEC
电话中这样做。 The grammar在下方。
{ EXEC | EXECUTE }
( { @string_variable | [ N ]'tsql_string' } [ + ...n ] )
[ AS { LOGIN | USER } = ' name ' ]
[;]
因此除了字符串文字/变量(和参数)和+
运算符之外,它不允许任何其他内容。
所以你需要将它连接到字符串 first 然后EXEC(@YourString)
DECLARE @Sql NVARCHAR(max);
SELECT *
FROM Customers;
SET @Sql = 'SELECT ''RowCount is equal to ' + CONVERT(VARCHAR(10), @@ROWCOUNT) + '''';
EXEC (@Sql);
但是你无论如何都不需要动态SQL。
SELECT 'RowCount is equal to ' + CONVERT(varchar(10), @@ROWCOUNT)
工作正常。
请注意,在SELECT
的语句与检索行计数之间根本没有干预语句,否则它将被重置。