如题。例如我我创建如下一个存储过程。(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
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
SELECT @nCount=COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sName
--或者
SET @nCount=@@ROWCOUNT
SELECT * FROM My_Table WHERE Name=@sName --这句返回一个结果集
PS:存储过程返回多个结果集可以用DataSet接收,每个结果集对应一个Table:
DataSet.Talbes[0],DataSet.Talbes[1],..
@sName NVARCHAR(20),
@nCount int output
As
SELECT * FROM My_Table WHERE Name=@sName --这是所得到的记录集
set @nCount=@@rowcount
SELECT COUNT(*) AS REC_COUNT FROM My_Table WHERE Name=@sName
SET @Count=@@ROWCOUNT(@@ROWCOUNT 返回受上一语句影响的行数。)
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
@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