As per MSDN SET NOCOUNT ON
Stops the message that shows the count of the number of rows affected
by a Transact-SQL statement or stored procedure from being returned
as part of the result set.
When SET NOCOUNT is ON, the count is not returned. When SET NOCOUNT is
OFF, the count is returned. The @@ROWCOUNT function is updated even
when SET NOCOUNT is ON.
Another related good post on SO
SET NOCOUNT ON usage
Taken from SET NOCOUNT ON Improves SQL Server Stored Procedure Performance
SET NOCOUNT ON
turns off the messages that SQL Server sends back to
the client after each T-SQL statement is executed. This is performed
for all SELECT, INSERT, UPDATE, and DELETE statements. Having this
information is handy when you run a T-SQL statement in a query window,
but when stored procedures are run there is no need for this
information to be passed back to the client.
By removing this extra overhead from the network it can greatly
improve overall performance for your database and application.
If you still need to get the number of rows affected by the T-SQL
statement that is executing you can still use the @@ROWCOUNT option.
By issuing a SET NOCOUNT ON this function (@@ROWCOUNT) still works and
can still be used in your stored procedures to identify how many rows
were affected by the statement.
so is there a reason not to use it?
Instead use @@ROWCOUNT
if you want to compare the count of rows affected.