
正文
SQL Server检索存储过程的结果集
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
目的:检索过滤执行存储过程的结果集
如下介绍两个常用的方法,但是都需要申明表结构;不知道是否有更简便的方法,如有更好的方法,请不吝赐教。
以系统存储过程sp_who2为例:
方法1:使用临时表
--1. 创建临时表
CREATE TABLE #tmp(
SPID int,
Status nvarchar(50),
Login nvarchar(50),
HostName nvarchar(50),
BlkBy nvarchar(50),
DBName nvarchar(50),
Command nvarchar(50),
CPUTime nvarchar(50),
DiskIO nvarchar(50),
LastBatch nvarchar(50),
ProgramName nvarchar(50),
SPID2 int,
REQUESTID int
) --2. 执行存储过程并将存储过程的返回结果集插入临时表
insert into #tmp exec sp_who2 --3. 检索、查询
select * from #tmp where Status = 'sleeping' --4. 清除临时表
DROP TABLE #tmp
方法2:使用表变量
--1. 申明表变量
declare @tempTable Table(SPID int,Status nvarchar(50), Login nvarchar(50), HostName nvarchar(50), BlkBy nvarchar(50), DBName nvarchar(50), Command nvarchar(50),
CPUTime nvarchar(50), DiskIO nvarchar(50), LastBatch nvarchar(50), ProgramName nvarchar(50), SPID2 int, REQUESTID int) --2. 执行存储过程并将存储过程的返回结果集插入表中
insert into @tempTable exec sp_who2 --3. 检索、查询
select * from @tempTable where Status = 'sleeping'






