Est-il possible d'exécuter la procédure de stockage comme une "table" pour l'opérateur SELECT
(MS SQL SERVER)?
Quelque chose comme
SELECT TotalSum FROM exec MyStoreProcedure '2011/11/01', '2011/11/01'
Je veux dire en quelque sorte l'intégrer dans l'opérateur SELECT
?
Je vous remercie!
Merci les gars!
La solution que j'ai faite est basée sur vos réponses:
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
Je suppose que votre proc renvoie plusieurs colonnes et vous en voulez juste une, non?
petite solution de contournement consiste à ajouter le résultat du proc à une variable de table, puis sélectionnez-le
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
Ce serait mieux en tant que fonction plutôt qu'en tant que procédure stockée.
create function dbo.TestTable
(@var1 bit)
returns table
AS
RETURN
( select *
from INFORMATION_SCHEMA.TABLES
where @var1 = 1
);
select * from
dbo.TestTable(1)
Pas directement (ou sans modifier la procédure stockée pour être une fonction table).
Mais vous pouvez le faire:
INSERT INTO SomeTempTableWithSchemaMatchingTheSproc (...)
EXEC MyStoredProcedure
SELECT * FROM SomeTempTableWithSchemaMatchingTheSproc
SQL Server 2005 et versions ultérieures, vous pouvez également utiliser une variable de table.
Cela fonctionne pour moi:
CREATE VIEW dbo.vw_xxx
AS
select * from openquery(YOURSERVERNAME, 'exec [sp_xxx] '''','''','''','''','''','''' ')