有可能这样做吗?我在源存储过程中设置了一些过滤器,我真的不想在另一个中复制它只是为了得到rowcount。
答案 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)
如果您真的想尽可能地微调,那么您将不得不更改源存储过程。如果你正在考虑性能,那么返回行集只是为了获得计数,这是不值得考虑的事情。