2012-03-29 15 views
18

के लिए "टेबल" जैसी स्टोर प्रक्रिया निष्पादित करें क्या SELECT ऑपरेटर (एमएस एसक्यूएल सर्वर) के लिए "टेबल" की तरह स्टोर प्रक्रिया निष्पादित करना संभव है?SELECT ऑपरेटर (एमएस एसक्यूएल सर्वर)

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

नहीं, लेकिन आप एक मेज पर उन परिणामों सम्मिलित कर सकते हैं (यदि आप अपने एसपी का परिणाम डाटासेट के स्तंभों पता है, निश्चित रूप से) – Lamak

उत्तर

20

मुझे लगता है कि आपकी proc कई कॉलम लौटाती है और आप बस एक चाहते हैं, है ना?

छोटे वैकल्पिक हल एक मेज चर को proc के परिणाम को जोड़ने के लिए और फिर यह

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

प्रश्न: है इसे .NET के SQLCommand ऑब्जेक्ट में रखना संभव है? क्या यह काम करेगा? –

2

सीधे नहीं:

समाधान मैं क्या किया अपने जवाब पर आधारित है।

लेकिन आप ऐसा कर सकता है:

INSERT INTO SomeTempTableWithSchemaMatchingTheSproc (...) 
EXEC MyStoredProcedure 

SELECT * FROM SomeTempTableWithSchemaMatchingTheSproc 

SQL सर्वर 2005 के बाद, आप भी एक मेज चर का उपयोग कर सकते हैं।

5

यह एक संग्रहीत प्रक्रिया में एक समारोह के बजाय बेहतर होगा से है।

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


select * from 
dbo.TestTable(1) 
1

यह मेरे लिए काम करता है:

CREATE VIEW dbo.vw_xxx 
AS 
    select * from openquery(YOURSERVERNAME, 'exec [sp_xxx] '''','''','''','''','''','''' ') 
संबंधित मुद्दे