2012-03-29 7 views
18

¿Es posible ejecutar el procedimiento de almacenamiento como una "tabla" para el operador SELECT (SERVIDOR MS SQL)?Ejecutar el procedimiento de almacenamiento como una "tabla" para el operador SELECT (SERVIDOR MS SQL)

Algo así como

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

quiero decir de alguna manera integrarlo en el operador SELECT?

¡Gracias!


Gracias chicos!

La solución de lo que hice se basa en sus respuestas:

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

No, pero se pueden insertar los resultados en una tabla (si conoce las columnas del conjunto de datos resultado de su espectro, por supuesto) – Lamak

Respuesta

20

Supongo que su proceso devuelve varias columnas y solo quiere una, ¿verdad?

pequeña solución es agregar el resultado de la proc para una variable de tabla y luego seleccionar de ella

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

Pregunta: ¿Es es posible ponerlo en el objeto SQLCommand de .NET? ¿Lo hará funcionar? –

2

No directamente (o sin alterar el procedimiento almacenado para ser una función con valores de tabla).

Pero usted puede hacer esto:

INSERT INTO SomeTempTableWithSchemaMatchingTheSproc (...) 
EXEC MyStoredProcedure 

SELECT * FROM SomeTempTableWithSchemaMatchingTheSproc 

de SQL Server 2005 en adelante, también se puede utilizar una variable de tabla.

5

Esta sería mejor como una función en lugar de un procedimiento almacenado.

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


select * from 
dbo.TestTable(1) 
1

Esto funciona para mí:

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