Every time we use the query analyzer to debug SQL statements, we usually see some information, reminding us how many rows are affected currently. What information is this? Is this information useful when we call it? Can I disable it?
The answer is the application of this information on our client.ProgramThe information is the done_in_proc information of each statement in the stored procedure.
We can use set nocount to control this information to improve program performance.
Msdn explains set nocount {on | off} as follows:
The returned results do not contain information about the number of rows affected by the transact-SQL statement.
Syntax: Set nocount {on | off}
The default value is off.
When set nocount is on, no count is returned (indicating the number of rows affected by the transact-SQL statement ).
When set nocount is off, return the count.
Even if set nocount is on, the @ rowcount function is updated.
When set nocount is on, the done_in_proc information of each statement in the stored procedure is not sent to the client. When you use a utility provided by Microsoft SQL server to execute a query) "Nn rows affected" is not displayed in the query results at the end ".
If some statements contained in the stored procedure do not return much actual data, this setting greatly reduces network traffic and significantly improves performance.
Permission
The Set nocount permission is granted to all users by default.
Set nocount is set during execution or runtime, rather than during analysis.
Note: When set nocount is on, no count is returned (indicating the number of rows affected by the transact-SQL statement ). When set nocount is off, return the count. ... Conclusion: we should add set nocount on to the header of the stored procedure, and add set nocount off to exit the stored procedure to optimize the stored procedure.
Conclusion: Set nocount on should be added to the header of the stored procedure, and set nocount off should be added to exit the stored procedure to optimize the stored procedure.
Let's say two more words:
1: when viewing sqlserver's help, pay attention to the "permission" section, because some statements require certain permissions, which are often ignored.
2: @ rowcount refers to the number of rows affected by the previous statement, including the number of records found, the number of deleted rows, and the number of updated records, and @ rowcount should follow the statement to be judged; otherwise, @ rowcount will return 0.
3: If you use a table variable, you must use an alias in the conditional expression to represent the name. Otherwise, an error is reported.
4: transactions must be processed in cud operations.
5: Use an error handler to check that the T-SQL Statement (IF) of the @ error system function is actually clearing the @ error value in the process, no value except zero can be captured, you must use set or select to capture errors immediatelyCode.
Address: http://www.cnblogs.com/duiker/archive/2006/02/15/331119.html