如题。例如我我创建如下一个存储过程。(SQL SERVER2000)
Create Procedure upGetRecords
          @sName NVARCHAR(20),
          @nCount int output
As
       SELECT * FROM My_Table WHERE Name=@sName --这是所得到的记录集       --但是如何才能将所得到的记录集的总数返回给参数@nCount呢?(请赐教)
       --能用如下的代码吗?
       SELECT COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sName
       SELECT @nCount= -- 在此处如何赋值?       --如果按照我的这样写法,得到的结果集岂不是有两个?我在Vc中如何识别?--我最想实现的是能返回一个记录集,然后将符合我检索条件的记录的记录总数返回给@nCount值,希望大家帮忙。return @@Error

解决方案 »

  1.   


           SELECT @nCount=COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sName
           --或者
           SET @nCount=@@ROWCOUNT
      

  2.   

    SELECT @nCount=COUNT(1) FROM My_Table WHERE Name=@sName --这句应该不返回结果集
    SELECT * FROM My_Table WHERE Name=@sName --这句返回一个结果集
    PS:存储过程返回多个结果集可以用DataSet接收,每个结果集对应一个Table:
    DataSet.Talbes[0],DataSet.Talbes[1],..
      

  3.   

    Create Procedure upGetRecords
    @sName NVARCHAR(20),
    @nCount int output
    As
    SELECT * FROM My_Table WHERE Name=@sName --这是所得到的记录集
    set @nCount=@@rowcount
      

  4.   

    @@rowcount好像是动态的,也就是说只要执行一次检索就会改变这个值,我这里提供的存储过程可是要供很多用户同时使用的,恐怕不会很准确吧?
      

  5.   

    declare @Count
    SELECT COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sName
    SET @Count=@@ROWCOUNT(@@ROWCOUNT 返回受上一语句影响的行数。)
      

  6.   

    或者直接使用SELECT @Count = COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sName
      

  7.   


    2000用这个会报错:
    SELECT @Count = COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sNamecreate Procedure upGetRecords
              @sName NVARCHAR(20),
              @nCount int output
    As
    begin     
     declare @sql nvarchar(1000)
     set @sql='select @n=count(1) from sysobjects where name='''+@sname+'''' exec sp_executesql @sql,N'@n int output',@ncount out
    end
    --------------------------------------------------declare @i int
    exec upgetrecords 'sysfiles1',@i output
    select @i
    ------------------
    1
      

  8.   

    Create Procedure upGetRecords
              @sName NVARCHAR(20),
              @nCount int output
    As
           SELECT * FROM My_Table WHERE Name=@sName --这是所得到的记录集
           select nCount=(SELECT COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sName) output