Как выбрать из вывода хранимой процедуры - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу иметь возможность сделать это:

select rows, reserved from sp_spaceused dummytable

но я не могу, потому что "sp_spaceused dummytable" не возвращает таблицу, даже если она выводит ее как побочный эффект.

Что такое обходной путь?

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Я не уверен, хотите ли вы получить выходные данные 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]
0 голосов
/ 10 сентября 2018

Попробуйте это:

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;

Вы можете проверить официальную документацию , поскольку системная хранимая процедура может возвращать различное количество столбцов в зависимости от входных параметров. Определение таблицы должно соответствовать номеру и типу возвращаемых столбцов.

0 голосов
/ 10 сентября 2018

Вы можете сохранить результат хранимой процедуры во временной таблице (или в табличной переменной, или даже в физической таблице) и затем запросить эту:

--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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...