Если бы я запустил это:
DECLARE @sql NVARCHAR(10) = NULL;
EXEC sp_executesql @sql;
SELECT @@ROWCOUNT;
Я бы ожидал получить 0, возможно, даже NULL будет иметь смысл.Но я тоже не получаю, я получаю 1. Почему на 1 строку влияет выполнение NULL-запроса?Если я передаю «правильный» (non_NULL) запрос, то он работает нормально.
Фон (для тех, кто заботится): это процесс, который должен генерировать динамический SQL для его обновления.ряд и ТОЛЬКО один ряд.Мне нужно проверить, была ли затронута 1 строка, а не 0, 2 или более 2. Она работала нормально, пока каким-то образом не удалось сгенерировать оператор NULL SQL, и это было расценено как успех - упс!
Фактическое исправление будет состоять в том, чтобы проверить, что SQL не равен NULL, прежде чем запускать его, и обрабатывать оператор NULL таким же образом, как и результат, отличный от 1. Но мне все равно было любопытно, почему он так себя вел.