我希望能够做到这一点:
select rows, reserved from sp_spaceused dummytable
但是我不能,因为“ sp_spaceused dummytable”即使返回一个表也不会返回表。
解决方法是什么?
答案 0 :(得分:1)
您可以将存储过程的结果存储到临时表(或表变量,甚至是物理表)中,然后查询该表:
--drop table if exists #temp
create table #temp(name nvarchar(100), rows int, reserved nvarchar(100), data nvarchar(100), index_size nvarchar(100), unused nvarchar(100))
insert into #temp
exec sp_spaceused 'dummytable'
select [rows], [reserved]
from #temp
答案 1 :(得分:1)
尝试一下:
DECLARE @DataSource TABLE
(
[name] SYSNAME
,[rows] CHAR(20)
,[reserved] VARCHAR(18)
,[data] VARCHAR(18)
,[index_size] VARCHAR(18)
,[unused] VARCHAR(18)
);
INSERT INTO @DataSource
EXEC sp_spaceused 'dbo.table_name';
SELECT [rows]
,[reserved]
FROM @DataSource;
您可以检查official documentation,因为系统存储过程可以根据输入参数返回不同数量的列。您的表定义必须与返回的列号和类型匹配。
答案 2 :(得分:-1)
我不确定是否要在表中获取SP的输出。如果是,则必须创建一个类似于SP输出的表结构,然后使用该表来检索结果:
CREATE TABLE #tempData
(
[Status] VarChar(20),
SubCategoryId INT,
ClientName VarChar(200),
ProjectName VarChar(200),
EmployeeName VarChar(100),
Department VarChar(20),
ManagerName VarChar(100),
[Role] VarChar(50)
)
Insert Into #tempData
EXEC [Your SP Name] [Parameters]