I would like to ask: what does set nocount on mean? Why do many stored procedures cover the first line ?? Multi-region !!!
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.
The help in msdn is as follows:
Set nocount
The returned results do not contain information about the number of rows affected by the transact-SQL statement.
Syntax
Set nocount {on | off}
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.
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.
Set nocount is set during execution or runtime, rather than during analysis.
Permission
The Set nocount permission is granted to all users by default.
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.