2010-05-25 21 views
19

में जीओ-स्टेटमेंट का क्या अर्थ है मैं टीएसक्यूएल के लिए नया हूं और सोच रहा हूं कि GO कथन का वास्तव में क्या अर्थ है। मेरे लिए यह बस वहां पर फेंक दिया जाता है जहां कभी भी यह फिट लगता है।टीएसक्यूएल

मुझे लगता है कि यह किसी भी तरह से पिछले कथन चलाने के लिए SQL सर्वर को बताता है? क्या होता है यदि आप उनका उपयोग नहीं करते हैं? अगर कोई GO का उपयोग नहीं करता है तो कोई ऐसा उदाहरण दे सकता है जहां एक कथन टूट जाएगा।

कृपया विस्तृत करें।

+0

[टी-एसक्यूएल गो स्टेटमेंट] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2668529/t-sql-go-statement) – Thomas

उत्तर

14

यह इस टूट जाएगा

declare @i int 
set @i =5 

declare @i int 
set @i =6 

Select @i 

संदेश 134, स्तर 15, राज्य 1, पंक्ति 5 चर नाम '@i' पहले से ही घोषित किया गया है एक बैच टर्मिनेटर

है। एक क्वेरी बैच या संग्रहीत प्रक्रिया के भीतर परिवर्तनीय नाम अद्वितीय होना चाहिए।

इस काम करेंगे

declare @i int 
set @i =5 

go 
declare @i int 
set @i =6 

Select @i 
10

यह बैच समाप्त होता है।

इसकी शायद ही कभी आवश्यकता होती है और इसे जितनी बार होनी चाहिए उससे कहीं अधिक उपयोग किया जाता है। एक मान्य स्थान संग्रहित प्रो प्रोग्रामिंग में है जहां आप पहले जांच करते हैं कि यदि जांच मौजूद है और इसे छोड़ दें तो इसे छोड़ दें। फिर आप बैच को समाप्त करने के लिए एक गो स्टेटमेंट का उपयोग करते हैं क्योंकि निर्माण प्रो कथन बैच का पहला कथन होना चाहिए।

+1

एक और मान्य और सामान्य स्थान आपके TSQL में वैकल्पिक दृश्य आदेशों के साथ है। बैच में 'अवलोकन दृश्य' एकमात्र कथन होना चाहिए। यानी, इसे बाद में देखने के पहले और बाद में 'जाओ' की आवश्यकता है। – mmcrae

6

वैसे। यह वास्तव में एक टीएसक्यूएल कमांड नहीं है। इसका उपयोग माइक्रोसॉफ्ट डीबी टूल्स द्वारा कमांड के दो बैचों को अलग करने के लिए किया जाता है।

वास्तव में आप इसे एसएसएमएस में एक अलग शब्द के रूप में कॉन्फ़िगर कर सकते हैं यदि आप Optionss..Batch अलगाव वरीयता सेटिंग के तहत करना चाहते हैं।

इस भेद का मुख्य स्थान यह महत्वपूर्ण है कि यदि आप कोड से डेटाबेस कनेक्शन के माध्यम से प्रश्नों में उनका उपयोग करने का प्रयास करते हैं तो एसक्यूएल गो स्टेटमेंट पर चकित होगा, उदाहरण के लिए ADO.NET के माध्यम से।

संबंधित मुद्दे