目的:检索过滤执行存储过程的结果集
如下介绍两个常用的方法,但是都需要申明表结构;不知道是否有更简便的方法,如有更好的方法,请不吝赐教。
以系统存储过程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'