目的:檢索過濾執行存儲過程的結果集
如下介紹兩個常用的方法,但是都需要申明表結構;不知道是否有更簡便的方法,如有更好的方法,請不吝賜教。
以系統存儲過程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'