Подтвердить что ты не робот

Выполнить процедуру хранения, такую ​​как "таблица" для оператора SELECT (MS SQL SERVER)

Можно ли выполнить процедуру хранения как "таблица" для оператора SELECT (MS SQL SERVER)?

Что-то вроде

SELECT TotalSum FROM exec MyStoreProcedure '2011/11/01', '2011/11/01'  

Я имею в виду каким-то образом интегрировать его в оператор SELECT?

Спасибо!


Спасибо, ребята!

Решение, которое я сделал, основано на ваших ответах:

declare @result table (f1 varchar(20),f2 varchar(20), CodProducto int, NomProducto varchar(1000), Costo decimal, Cantidat int, Total decimal)
INSERT INTO @result exec  MyStoreProcedure '20111201', '20111201'
select * from @result
4b9b3361

Ответ 1

Я предположил, что ваш proc возвращает несколько столбцов, и вы просто хотите его, не так ли?

Небольшое обходное решение состоит в том, чтобы добавить результат proc к переменной таблицы и затем выбрать из него

create proc proc1 as
select 1 as one, 2 as two

declare @result table (one int, two int)

insert into @result
exec proc1

select one from @result

Ответ 2

Это будет лучше, чем функция, а не хранимая процедура.

create function dbo.TestTable
(@var1 bit)
returns table
AS
RETURN
( select *
    from INFORMATION_SCHEMA.TABLES
    where @var1 = 1
);


select * from
dbo.TestTable(1)

Ответ 3

Не напрямую (или без изменения хранимой процедуры как табличной функции).

Но вы могли бы сделать это:

INSERT INTO SomeTempTableWithSchemaMatchingTheSproc (...)
EXEC MyStoredProcedure 

SELECT * FROM SomeTempTableWithSchemaMatchingTheSproc 

SQL Server 2005, вы также можете использовать переменную таблицы.

Ответ 4

Это работает для меня:

CREATE VIEW dbo.vw_xxx
AS
  select * from openquery(YOURSERVERNAME, 'exec [sp_xxx] '''','''','''','''','''','''' ')