Выполнить процедуру хранения, такую как "таблица" для оператора 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
Ответы
Ответ 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] '''','''','''','''','''','''' ')