2010-09-22 13 views
16

में एक पंक्ति और स्टोर का चयन करें, इसलिए, मैं इस संग्रहीत प्रक्रिया को लिख रहा हूं और मैं वास्तव में एसक्यूएल पर चूसता हूं।एसक्यूएल एक एसक्यूएल वैरिएबल

तुम लोग मेरे सवाल है:

मैं एक पूरी पंक्ति का चयन करें और एक चर में संग्रहीत कर सकते हैं?

मैं जानता हूँ कि मैं कुछ ऐसा कर सकते हैं:

declare @someInteger int 
select @someInteger = (select someintfield from sometable where somecondition) 

लेकिन मैं sometable से संपूर्ण पंक्ति का चयन करें और एक चर में संग्रहीत कर सकते हैं?

उत्तर

26

आप कई चर में क्षेत्रों का चयन कर सकते हैं:

DECLARE @T TABLE (
    A int, 
    B int 
) 
INSERT INTO @T (A, B) 
SELECT 
    Col1, 
    Col2 
FROM SomeTable 
WHERE ... 

फिर आप की तरह अपनी मेज चर से चुन सकते हैं:

DECLARE @A int, @B int 

SELECT 
    @A = Col1, 
    @B = Col2 
FROM SomeTable 
WHERE ... 

एक और संभावित रूप से बेहतर है, दृष्टिकोण एक तालिका का उपयोग करना होगा एक नियमित मेज।

+0

हाँ मैं मैं अनुमान ऐसा कर सकता है ... यह इस मामले में सबसे अच्छा समाधान हो सकता है ... मैं मूल रूप से अपने अत्याचारी एसक्यूएल कोड को साफ करने की कोशिश कर रहा हूं और यह इसे थोड़ा क्लीनर बना देगा, अभी मेरे पास मूल रूप से एक ही कोड है यदि ब्लॉक अन्य ब्लॉक में है ... तो कम से कम कुछ बार दोहराए गए कोड से छुटकारा पा जाएगा ... – EJC

+0

@EJC: "अभी मेरे पास मूल रूप से उसी ब्लॉक में है जो ब्लॉक के अन्य ब्लॉक में है" - नोट आपका वर्तमान दृष्टिकोण प्रदर्शन बिंदु से बेहतर हो सकता है लेकिन स्पष्ट रूप से आपको परीक्षण करने की आवश्यकता होगी। बेशक – onedaywhen

+0

! :) सलाह के लिए धन्यवाद – EJC

5

आपको एक तालिका चर कि अपनी मेज स्कीमा से मेल खाता बनाने और इसे में एकल पंक्ति संग्रहीत कर सकती है:

declare @myrow table(field0 int,field1 varchar(255)) 
insert into @myrow 
select field0,field1 from mytable where field0=1 
संबंधित मुद्दे