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
私はあなたの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
これは、ストアドプロシージャよりも関数としての方が良いでしょう。
create function dbo.TestTable
(@var1 bit)
returns table
AS
RETURN
( select *
from INFORMATION_SCHEMA.TABLES
where @var1 = 1
);
select * from
dbo.TestTable(1)
直接ではありません(またはストアドプロシージャをテーブル値関数に変更することなく)。
しかし、あなたはこれを行うことができます:
INSERT INTO SomeTempTableWithSchemaMatchingTheSproc (...)
EXEC MyStoredProcedure
SELECT * FROM SomeTempTableWithSchemaMatchingTheSproc
SQL Server 2005以降では、テーブル変数も使用できます。
これは私のために働く:
CREATE VIEW dbo.vw_xxx
AS
select * from openquery(YOURSERVERNAME, 'exec [sp_xxx] '''','''','''','''','''','''' ')