How to suppress result sets returned from a stored procedure?

I have a novice question. How does one suppress result sets returned from a stored procedure

I have created a procedure which makes use of multiple stored procedures . The purpose of this procedure (lets call it procA), is to count the rows returned from other procedures. The “Other” procedures will return rows having an unknown number of columns. I would like to limit any changes which may be needed to be made to the “Other” procs.

Once procA has collected all of the information (@@rowcount) from the inner procedures, then it will return a result set having several columns – mainly the subProcedure name and number of rows returned.

The purpose of procA is to query several subsystems and identify which ones need attention.

Cursor While Loop

exec @ProcName @ObjectName,@userID,@syncDate

set @recs = @@rowcount;

My c# program calls the sp as follows:

cmd = DataUtility.GetSQLCommand();

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandText = "FetchAdminData";

cmd.Parameters.AddWithValue("@userID", userAlias);

cmd.Parameters.AddWithValue("@adminDate",userDate);

reader = cmd.ExecuteReader();

I do not wish to iterate over each resultSet when I am only interested in the last one. Any suggestions



Answer this question

How to suppress result sets returned from a stored procedure?

  • gtimofte

    You could use an output variable with a concatenation of the results (something like: 'count1, count2, count3') - it is not very pretty, but it will probably work...

    The inner resultsets wil be returned to the client (even if it is not using them), so be carefull because you might be sending lots information you don't need through your network.

    Also, if you end up using the concatenation/output variable you shouldn't use ExecuteReader but ExecuteNonQuery instead, so that your sqlclient doesn't need to process the results.


  • Aleniko29139

    I may not completely understand your goal here, but see
    if this is any help. Here, p1 and p2 are procedures that
    return a single rowset. The procedure p3 returns as a single
    row the total number of rows returned by p1 and p2. This
    will only work if p1 and p2 don't have parameters that
    change. If they do, there are other less convenient
    solutions, though.
    
    (ME must be defined as a linked server to do this)
    
    create proc p1 as
    set nocount on
    select top (5) percent OrderID
    from Northwind..Orders
    go
    
    create proc p2 as
    set nocount on
    select top (5) percent OrderID
    from Northwind..[Order Details]
    go
    
    create proc p3 as
    set nocount on
    declare @i int
    set @i = (
      select count(*) from openquery(ME,'p1')
    )
    set @i = @i + (
      select count(*) from openquery(ME,'p2')
    )
    select @i as TotalCount
    go
    
    exec p3
    
    go
    drop proc p3, p2, p1
    
    Steve Kass
    Drew University
    www.stevekass.com
    
    Finkster@discussions.microsoft.com wrote:
    > I have a novice question. How does one suppress result sets returned
    > from a stored procedure    
    > 
    > 
    > 
    > I have created a procedure which makes use of multiple stored procedures
    > . The purpose of this procedure (lets call it procA), is to count the
    > rows returned from other procedures. The “Other” procedures will return
    > rows having an unknown number of columns. I would like to limit any
    > changes which may be needed to be made to the “Other” procs.
    > 
    > 
    > 
    > Once procA has collected all of the information (@@rowcount) from the
    > inner procedures, then it will return a result set having several
    > columns – mainly the subProcedure name and number of rows returned.
    > 
    > 
    > 
    > The purpose of procA is to query several subsystems and identify which
    > ones need attention.
    > 
    > 
    > 
    > Cursor While Loop
    > 
    >    exec @ProcName @ObjectName,@userID,@syncDate
    > 
    >    set @recs = @@rowcount;
    > 
    > 
    > 
    > 
    > 
    > My c# program calls the sp as follows:
    > 
    > 
    > 
    > cmd = DataUtility.GetSQLCommand();
    > 
    > cmd.CommandType = CommandType.StoredProcedure;
    > 
    > cmd.CommandText = "FetchAdminData";
    > 
    > cmd.Parameters.AddWithValue("@userID", userAlias);
    > 
    > cmd.Parameters.AddWithValue("@adminDate",userDate);
    > 
    > reader = cmd.ExecuteReader();
    > 
    > 
    > 
    > I do not wish to iterate over each resultSet when I am only interested
    > in the last one.  Any suggestions 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    


  • How to suppress result sets returned from a stored procedure?