2009-06-22 2 views
1

Является ли nocount в SQL для каждого соединения или для каждого выполнения?Является ли nocount в SQL для каждого соединения или для каждого выполнения?

Рассмотрим следующий

-- Proc to return data. 
-- nocount is set to on (no row count returned) 
create procedure procOne as 
    set nocount on 
    select * from myTable 

Если у меня есть приложение, которое вызывает procOne, а затем выполняет SQL вызова, такие как: УДАЛИТЬ из MYTABLE где Foo = бар

Будет ли ВЕЬЕТЕ возвращать число строк удалены? Я сказал да.

Процедура должна устанавливать только значение nocount во время его выполнения. Пожалуйста, дайте мне знать, если это правильно.

Благодаря

ответ

1

Это для каждого исполнения, от NOCOUNT docs:

заходящего указано SET NOCOUNT действует на выполнения или во время выполнения, а не во время синтаксического анализа.

+0

Спасибо. Я прочитал это в BOL, но не был уверен, означает ли это то, что я хотел, чтобы это значило. :-) Спасибо – souLTower

2

Да. После завершения процедуры он сбрасывает значение переменной SET.

Если инструкция SET выполняется в хранимой процедуре или триггере, значение параметра SET восстанавливается после того, как элемент управления возвращается из хранимой процедуры или триггера. Кроме того, если инструкция SET задана в динамической строке SQL, которая запускается с использованием sp_executesql или EXECUTE, значение опции SET восстанавливается после того, как элемент управления возвращается из пакета, указанного в динамической строке SQL.

см http://msdn.microsoft.com/en-us/library/ms190356.aspx

Смежные вопросы