2015-04-16 8 views
6

में '@@' का उपयोग क्या है SQL सर्वर में @@ का उपयोग क्या है?SQL सर्वर

+0

@cch: वह ओरेकल है। –

उत्तर

4

According to MSDN, इन के लिए सही नाम system functions है।

नामकरण भ्रम (वैश्विक चर, सिस्टम फ़ंक्शन, वैश्विक फ़ंक्शन) SQL सर्वर के इतिहास में उपयोग की जाने वाली विभिन्न शब्दावली से उत्पन्न होता है। MSDN Transact-SQL Variables article से:

कुछ Transact-SQL प्रणाली कार्यों के नाम संकेत से कम दो के साथ शुरू (@@)। हालांकि माइक्रोसॉफ्ट एसक्यूएल सर्वर के पुराने संस्करणों में, @@ फ़ंक्शंस को वैश्विक चर के रूप में संदर्भित किया जाता है, वे चर नहीं हैं और वेरिएबल्स के समान व्यवहार नहीं हैं। @@ फ़ंक्शन सिस्टम फ़ंक्शंस हैं, और उनके वाक्यविन्यास उपयोग फ़ंक्शंस के नियमों का पालन करते हैं।

इस प्रकार, दो 'पर' प्रतीकों (@@) का उपयोग कुछ सिस्टम कार्यों को दर्शाने के लिए किया जाता है। वाक्यांश "ग्लोबल वैरिएबल" का उपयोग बहिष्कृत किया गया था (हालांकि आप अभी भी some people use it देखेंगे), सबसे अधिक संभावना है क्योंकि प्रोग्रामिंग दुनिया में एक वैश्विक चर एक एकल मान है जो हर जगह दिखाई देता है, और जैसा कि पहले से ही बताया गया है कि यह नहीं है यहां हो रहा है (उदाहरण के लिए, @@IDENTITY)।

अस्थायी तालिकाओं के नाम के कारण आगे भ्रम की संभावना है। एक टेबल नाम उपसर्ग करने वाला एक हैश साइन एक स्थानीय रूप से स्कॉप्ड अस्थायी तालिका इंगित करता है (उदा।, #MyLocalTable), प्रतीक पर एकल की तरह एक स्थानीय रूप से स्कॉप्ड चर (उदाहरण के लिए, @MyLocalVariable) इंगित करता है। अस्थायी तालिका में दूसरा हैश साइन जोड़ना इसे वैश्विक स्तर पर स्कॉप्ड करता है (उदा।, ##MyGlobalTable), लेकिन एक चर does not produce the same effect पर प्रतीकों पर दो जोड़ने की कोशिश कर रहा है।

0

@@ आंतरिक सांख्यिकीय और मेटाडाटा फ़ंक्शंस को उपसर्ग करने के लिए उपयोग किया जाता है जो SQL सर्वर कॉन्फ़िगर किया गया है, किसी विशेष डेटाबेस के लिए विशिष्ट नहीं है, इस बारे में जानकारी देता है।

उदाहरण के लिए, इन डेटाबेस (@@CONNECTIONS) के लिए किए गए कनेक्शन की संख्या, और सप्ताह के पहले दिन (@@DATEFIRST)

https://msdn.microsoft.com/en-us/library/ms173823.aspx

https://msdn.microsoft.com/en-us/library/ms177520.aspx

3

@ एक स्थानीय के लिए है शामिल परिवर्तनीय

@@ वैश्विक चर या फ़ंक्शन के लिए है।

, कई मानक वैश्विक चर या कार्यों, उदा .: @@IDENTITY, @@ROWCOUNT हैं @@TRANCOUNT

+0

तो आपके पास इसका स्रोत है? क्योंकि आप सुझाव दे रहे हैं कि '@@ पहचान' वैश्विक है, जिसका अर्थ है कि सभी उपयोगकर्ता एक ही मान देखते हैं। तो अगर मैं 'INSERT' करता हूं और फिर 'SELECT @@ पहचान' करता हूं तो मुझे एक पूरी तरह से अलग उपयोगकर्ता द्वारा किए गए एक सम्मिलन की पहचान मिल सकती है? – funkwurm

+1

@funkwurm, यही कारण है कि आप scope_identity https://msdn.microsoft.com/en-us/library/ms190315.aspx का उपयोग करते हैं, हालांकि दोनों सत्र द्वारा सीमित हैं, लेकिन फिर भी यह वैश्विक प्रकार का है – pinkfloydx33