Пока я писал несколько запросов T-SQL с NOEXEC ON
, я испытал интересное поведение SQL Server, и мне интересно, почему это произошло. Иногда я получал только
Команда успешно.
как я и ожидал, но иногда я получал один или несколько
(затронуты 0 строк (строк))
сообщения.
Я знаю, что команда SET NOEXEC ON
компилирует команду, но не выполняет ее, поэтому я думаю, что я не получил бы
(затронуты 0 строк (строк))
сообщения.
В первом примере все выглядит нормально.
SET NOEXEC ON
INSERT INTO Test (column1) VALUES ('etc')
Результат:
Команда успешно.
Но во втором примере я думаю, что что-то пошло не так...
SET NOEXEC ON
DELETE FROM Test
Результат:
(затронуты 0 строк (строк))
В третьем примере я использовал временную таблицу:
CREATE TABLE #tmp (id INT IDENTITY(1, 1), idX INT)
SET NOEXEC ON
INSERT INTO #tmp (idX) VALUES (1)
DELETE FROM Test
SET NOEXEC OFF
DROP TABLE #tmp
Результат:
(затронуты 0 строк (строк))
И, наконец, я добавил только GO
в мой запрос, я думаю, что результат интересен
CREATE TABLE #tmp (id INT IDENTITY(1, 1), idX INT)
SET NOEXEC ON
GO
INSERT INTO #tmp (idX) VALUES (1)
DELETE FROM Test
SET NOEXEC OFF
DROP TABLE #tmp
Результат:
(затронуты 0 строк (строк))
(затронуты 0 строк (строк))