如何获取存储过程执行结果的记录总数?(50分)

N

nzfsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我在数据库中定义了一个存储过程;
如:
/*检索表中数据 */

CREATE PROCEDURE SelectGoods
@TabName varchar(200) , /*行包表名*/
@ItmTabName varchar(20), /* 行包详细表名*/
@Mysymbol varchar(3)='%', /*关键字一*/
@Myno varchar(32), /*关键字二*/
@MyStartStationName varchar(10)='%', /*关键字三*/
@site_code varchar(4)='%' /*库位号*/
AS
declare @MySql varchar(200)
set @MySql='select A.Symbol, A.No, A.StartStationName, A.Site, A.Piece, A.Weight, A1.GoodsNo, A1.GoodsName from '+@TabName
+' as A INNER JOIN '+@ItmTabName
+' as A1 ON A.Symbol=A1.Symbol AND A.No=A1.No AND A.StartStationName=A1.StartStationName where A.site ='
+@site_code+' and a.symbol='+@Mysymbol +' and a.no='+@Myno +' and a. StartStationName='+@MyStartStationName
+'order by A.Symbol, A.No, A.StartStationName '
Exec(@MySql)
/*我如何知道这个存储过程执行后的记录总数*/
/*我用ADOstoreproc.recordset.recount不可以获取记录总数*/
GO
------------------------------------------
 
ADOstoreproc.recordcount
 
我想起来了。可不可以这样:
AdoDataset.commandtexe:='exec 过程名 "参数"';
AdoDataSet.Execute;
而后,在AdoDataset.recordset.recordcount中可以获取记录总数。
(因为AdoStoreproc组件不支持recordcount属性)

这样可行吗?
 
w12345678:我按你的运行一下,它报错在这件语句:
Adostoreproc.execproc;
i:=AdostoreProc.recordcount;

它讲:cannot perform this operation on a closed dataset;

为什么?
 
AdoStoreproc返回记录记得话用AdoStoreproc.active:=true打开;就可以用ADOstoreproc.recordcount
 
刚才我刷新是出现的提示框是怎么搞的,让我长长见识
 
如果要使用存储过程返回的数据集,哪么要用Adostoreproc.open.
否则在存储过程中返回记录数据,用@Result取回.

CREATE PROCEDURE SelectGoods
.............................
Exec(@MySql)
return @@ROWCOUNT
 
to zhanggeye:
我在前端时,如何获取记录数呢?
@@rowcount要不要我重新定义一下?

我在前端的变量是不是取@@result的值?
请示例!
 
又存储过程返还记录集吗?
我如何依次获取其记录集中的数据。。。。。
 
@@rowcount是系统变量 返回受上一语句影响的行数。
存储过程可以返还记录集,用AdoStoreproc.active属性关闭打开,吧他当作adoquery组件用
 
知道了。不过好像在select 后加一个count(*) as mycount.....
然后在字段mycount中可以获取总数 。对不对?
 
存储过程当然可以返回记录集,你可以把它当作普通查询一样使用。
ADOStoreproc可以通过RETURN_VALUE参数取得存储过程的返回值。
 
RETURN_VALUE返还是什么数据?是一个记录集还是一个数据值。
 
@RETURN_VALUE 是存储过程的第一个参数名,系统缺省
 
多人接受答案了。
 
顶部