I have an insert statement that pulls some data into a few table variables and then based on that data does a few inserts into several tables. I only care about the rows that are inserted into the real tables and not the table variables, but ExecuteNonQuery will return the sum of all @@ROWCOUNT’s. What I would like to know is there a way to override the rowcount that is returned using ExecuteNonQuery?
I am aware that I can use ExecuteScalar or output variables as an alternative.
Here is an example that boils it down to a simple example:
CREATE TABLE VersionExample ( Version Varchar(255) )
Declare @RowCountICareAbout int
DECLARE @Example TABLE ( Version Varchar(255) )
INSERT INTO @Example Select @@VERSION
INSERT INTO VersionExample SELECT Version FROM @Example
SET @RowCountICareAbout = @@ROWCOUNT
--Use @RowCountICareAbout as the rows affected returned to ExecuteNonQuery
No idea if this will work, but have you tried SET NOCOUNT ON (and then SET NOCOUNT OFF before your final query)?
Update: this blog post and comments seem to indicate this will indeed work:
http://petesbloggerama.blogspot.com/2006/10/note-to-self-set-nocount-on-not.html