SQL Server检索存储过程的结果集

目的:检索过滤执行存储过程的结果集

如下介绍两个常用的方法,但是都需要申明表结构;不知道是否有更简便的方法,如有更好的方法,请不吝赐教。

以系统存储过程sp_who2为例:

方法1:使用临时表

 1 --1. 创建临时表
 2 CREATE TABLE #tmp(
 3         SPID int,
 4         Status nvarchar(50), 
 5         Login nvarchar(50), 
 6         HostName nvarchar(50), 
 7         BlkBy nvarchar(50), 
 8         DBName nvarchar(50), 
 9         Command nvarchar(50),
10         CPUTime nvarchar(50), 
11         DiskIO nvarchar(50), 
12         LastBatch nvarchar(50), 
13         ProgramName nvarchar(50),
14         SPID2 int, 
15         REQUESTID int
16     )
17 
18 --2. 执行存储过程并将存储过程的返回结果集插入临时表
19 insert into #tmp exec sp_who2
20 
21 --3. 检索、查询
22 select * from #tmp where Status = 'sleeping'
23 
24 --4. 清除临时表
25 DROP TABLE #tmp

方法2:使用表变量

1 --1. 申明表变量
2 declare @tempTable Table(SPID int,Status nvarchar(50), Login nvarchar(50), HostName nvarchar(50), BlkBy nvarchar(50), DBName nvarchar(50), Command nvarchar(50),
3 CPUTime nvarchar(50), DiskIO nvarchar(50), LastBatch nvarchar(50), ProgramName nvarchar(50), SPID2 int, REQUESTID int)
4 
5 --2. 执行存储过程并将存储过程的返回结果集插入表中
6 insert into @tempTable exec sp_who2
7 
8 --3. 检索、查询
9 select * from @tempTable where Status = 'sleeping'

猜你喜欢

转载自www.cnblogs.com/Juning/p/11268409.html