Возвращаемые значения обычно используются не для «возврата» результата, а для возврата успеха (0) или номера ошибки (1-65K). Все вышеперечисленное, по-видимому, указывает на то, что sp_executesql не возвращает значение, что является неправильным. sp_executesql вернет 0 в случае успеха и любой другой номер в случае неудачи.
В приведенном ниже @i вернется 2727
DECLARE @s NVARCHAR(500)
DECLARE @i INT;
SET @s = 'USE [Blah]; UPDATE STATISTICS [dbo].[TableName] [NonExistantStatisticsName];';
EXEC @i = sys.sp_executesql @s
SELECT @i AS 'Blah'
SSMS покажет это
Сообщение 2727, уровень 11, состояние 1, строка 1
Не удается найти индекс «NonExistantStaticsName».