2012-03-29 9 views
18

Czy można uruchomić procedurę składowania jak "tabelę" dla operatora SELECT (serwer MS SQL SERVER)?Wykonaj procedurę składowania, taką jak "tabela" dla operatora SELECT (MS SQL SERVER)

Coś

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

Znaczy jakoś zintegrować go do operatora SELECT?

Dziękujemy!


Dzięki chłopaki!

Rozwiązanie to co zrobiłem jest oparty na odpowiedziach:

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

Nie, ale można wstawić te wyniki na stole (jeśli wiesz kolumny w zbiorze wynikowym swojej sp, oczywiście) – Lamak

Odpowiedz

20

Przypuszczam, że Twój proces zwraca kilka kolumn, a ty chcesz tylko jeden, prawda?

małe obejście jest dodanie wyniku proc do zmiennej tabeli, a następnie wybierz z niego

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 
+0

pytanie: Czy można go umieścić w obiekcie SQLCommand .NET? Czy to działa? –

2

Nie bezpośrednio (lub bez zmiany procedurę przechowywaną, aby być funkcja wycenione tabela).

Ale można to zrobić:

INSERT INTO SomeTempTableWithSchemaMatchingTheSproc (...) 
EXEC MyStoredProcedure 

SELECT * FROM SomeTempTableWithSchemaMatchingTheSproc 

SQL Server 2005 roku, można również użyć zmiennej stołowego.

5

Byłoby lepiej jako funkcję niż procedura przechowywana.

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


select * from 
dbo.TestTable(1) 
1

Działa to dla mnie:

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