2009-06-22 20 views
1

SQL中是每個連接或每次執行的nocount嗎?SQL中是每個連接或每次執行的nocount?

考慮以下

-- 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的DELETE其中foo =欄

會delete語句返回數行被刪除?我說是。

該過程應該只在其執行中設置nocount值。請讓我知道這是否正確。

感謝

回答

1

這對於每次執行,從NOCOUNT docs

通過SET NOCOUNT指定的設置是在執行或運行時的效果,而不是在分析時。

+0

感謝。我在BOL中閱讀過,但不確定這是否意味着我想表達的意思。 :-) 謝謝 – souLTower 2009-06-22 19:10:24

2

是的。程序完成後,它重置SET變量的值。

如果在存儲過程或觸發器中運行SET語句,則在從存儲過程或觸發器返回控制權之後,SET選項的值將恢復。另外,如果在使用sp_executesql或EXECUTE運行的動態SQL字符串中指定了SET語句,則在從動態SQL字符串中指定的批處理返回控制之後,SET選項的值將恢復。

參考http://msdn.microsoft.com/en-us/library/ms190356.aspx

相關問題