创建存储过程以返回另一个存储过程的行计数

时间:2009-04-06 21:41:42

标签: sql-server stored-procedures

有可能这样做吗?我在源存储过程中设置了一些过滤器,我真的不想在另一个中复制它只是为了得到rowcount。

3 个答案:

答案 0 :(得分:6)

我知道如何执行此操作的唯一方法是从存储过程插入临时表,然后选择计数。不幸的是,没有很好的办法在存储过程中执行“选择”。

CREATE TABLE #stuff (id int, status char(6))
INSERT #stuff (id, status)
EXEC dbo.sp_get_stuff

SELECT count(*) FROM #stuff

DROP TABLE #stuff

修改

上面的方法允许您从存储过程中进行选择,但正如Greg指出的那样,rowcount可以简化为:

EXEC dbo.sp_get_stuff
SELECT @@Rowcount

答案 1 :(得分:3)

这也有效:

create proc pTest1
as
select * from comp
go

create proc pTest2
as
exec pTest1
select @@rowcount
GO

答案 2 :(得分:1)

如果您真的想尽可能地微调,那么您将不得不更改源存储过程。如果你正在考虑性能,那么返回行集只是为了获得计数,这是不值得考虑的事情。