यह here पर डुप्लिकेट जैसा दिख सकता है, लेकिन ऐसा नहीं है। मैं एक सर्वोत्तम अभ्यास पाने की कोशिश कर रहा हूं, एक तकनीकी उत्तर नहीं (जिसे मैं पहले से ही जानता हूं (सोच) मुझे पता है)।एसक्यूएल वैरिएबल चुनें - क्या मुझे इस वाक्यविन्यास का उपयोग करने से बचाना चाहिए और हमेशा एसईटी का उपयोग करना चाहिए?
SQL सर्वर के लिए नया और अच्छी आदतें बनाने की कोशिश कर रहा है।
मैं SET @var =
और SELECT @var =
यहाँ के बीच कार्यात्मक अंतर का एक बड़ा स्पष्टीकरण पाया: http://vyaskn.tripod.com/differences_between_set_and_select.htm
संक्षेप में प्रत्येक क्या है कि अन्य नहीं (उदाहरण के लिए स्रोत देखें) है:
सेट:
- एएनएसआई और पोर्टेबल, माइक्रोसॉफ्ट द्वारा अनुशंसित।
SET @var = (SELECT column_name FROM table_name)
विफल रहता है जब चयन एक मूल्य के बाद अधिक मूल्य देता है, अप्रत्याशित परिणामों की संभावना को समाप्त करता है।SET @var = (SELECT column_name FROM table_name)
@var
को NULL पर सेट करेगा यदिSELECT column_name FROM table_name
वापस आया है, इस प्रकार@var
को इसके पहले के मूल्य पर कभी नहीं छोड़ा गया है।
का चयन करें: (मेरे परीक्षण के अनुसार)
- एकाधिक चर एक बयान
- विभिन्न सिस्टम चर पहले DML कथन
SELECT @var = column_name FROM table_name
को@var
स्थापित करेगा द्वारा निर्धारित वापस लौटा सकते में सेट किया जा सकता चयन द्वारा लौटा अंतिम मूल्य। यह एक सुविधा या एक बग हो सकता है। व्यवहारSELECT @j = (SELECT column_name FROM table_name)
वाक्यविन्यास के साथ बदला जा सकता है।- गति। एकाधिकएकल एकाधिक चर/चयन विवरणों के विपरीत चयन कथन अधिक तेज है। उनके बिंदु को साबित करने के लिए उनके पास नमूना परीक्षण है। यदि आप अन्यथा साबित करने के लिए एक परीक्षण तैयार कर सकते हैं, तो इसे लाओ!
तो, मैं क्या करूँ?
(लगभग) हमेशा
SET @var =
उपयोग करते हैं,SELECT @var =
का उपयोग कर गंदा कोडिंग और मानक नहीं है।या
उपयोग
SELECT @var =
स्वतंत्र रूप से, यह मेरे लिए अधिक हासिल कर, जब तक कि कोड एक और पर्यावरण के लिए भेजा जा सकता है।
धन्यवाद
एक wellwritten प्रश्न के लिए +1 और अभिलेखागार की खोज होने के लिए। –