Вы можете сделать, но вы не можете сделать это прямо в вызове EXEC
. The grammar ниже.
{ EXEC | EXECUTE }
({ @string_variable | [ N ]'tsql_string' } [ + ...n ])
[ AS { LOGIN | USER } = ' name ' ]
[;]
так что ничего, кроме строковых литералов/переменных (и параметры) и оператора +
не позволяют.
Так что вам нужно будет объединить ее в строку первого затем 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
не было промежуточных операторов, и чтобы получить номер строки или он будет сброшен.