web-dev-qa-db-ja.com

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
21
Developer

私はあなたのprocがいくつかの列を返し、あなたはちょうど1つが欲しいと思いましたか?

小さな回避策は、プロシージャの結果をテーブル変数に追加してから選択することです

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
20
Diego

これは、ストアドプロシージャよりも関数としての方が良いでしょう。

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


select * from
dbo.TestTable(1)
5
Vinnie

直接ではありません(またはストアドプロシージャをテーブル値関数に変更することなく)。

しかし、あなたはこれを行うことができます:

INSERT INTO SomeTempTableWithSchemaMatchingTheSproc (...)
EXEC MyStoredProcedure 

SELECT * FROM SomeTempTableWithSchemaMatchingTheSproc 

SQL Server 2005以降では、テーブル変数も使用できます。

2
Mitch Wheat

これは私のために働く:

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