मेरे पास कभी-कभी एक एसक्यूएल स्क्रिप्ट होती है जिसमें एक या एक से अधिक सुपर-लॉन्ग (कभी-कभी बेवकूफ-लंबे) तार भी होते हैं। आमतौर पर ये VARBINARY
शाब्दिक / स्थिरांक होते हैं जो फाइलों / असेंबली का प्रतिनिधित्व करते हैं, लेकिन कभी-कभी ये पाठ होते हैं।
वास्तव में लंबे तार के साथ प्राथमिक समस्या यह है कि कुछ पाठ संपादक उन सभी को अच्छी तरह से संभाल नहीं पाते हैं। उदाहरण के लिए, मेरे पास एक VARBINARY
शाब्दिक है जो मैं एक CREATE ASSEMBLY [AssemblyName] FROM 0x....
बयान में उपयोग करता हूं , और विधानसभा खुद आकार में केवल 1 एमबी से अधिक है, जो पाठ फ़ाइल में सिर्फ 2 मिलियन से अधिक वर्णों के बराबर है क्योंकि प्रत्येक बाइट को हेक्स नोटेशन में दो वर्णों का प्रतिनिधित्व करने की आवश्यकता होती है (जैसे 0x1F
= ए 1
और ए F
)। SQL सर्वर प्रबंधन स्टूडियो (SSMS) इसे अच्छी तरह से हैंडल नहीं करता है और कई सेकंड तक लटका रहता है क्योंकि मैं उस लाइन पर स्क्रॉल करने का प्रयास करता हूं। और वास्तव में, कुछ संस्करणों (निश्चित रूप से अगर यह अभी भी होता है) भी एक स्क्रिप्ट को खोलते समय लंबी लाइनों के बारे में एक चेतावनी प्रदर्शित करेगा जिसमें एक निश्चित लंबाई पर कम से कम एक रेखा होती है।
एक द्वितीयक मुद्दा यह है कि यह उस स्वरूपण को जटिल करता है जब या तो वर्ड-रैप सक्षम किए बिना संपादक में उपयोग किया जाता है, या ऑनलाइन पोस्ट किया जाता है। यहाँ समस्या यह है कि क्षैतिज स्क्रॉल बार के लिए स्लाइडर बहुत संकीर्ण है और इसे थोड़ा-सा हिलाने पर भी आमतौर पर गैर-सुपर-लॉन्ग टेक्स्ट को देखने के लिए स्क्रॉल करता है।
अब, टी-एसक्यूएल नई लाइनों या अर्ध-कॉलनों के साथ आदेशों को समाप्त नहीं करता है (हालांकि सेमी-कॉलन्स को प्राथमिकता दी जाती है / अनुशंसित होती है, SQL सर्वर 2005 के साथ शुरू होती है)। इसलिए चूंकि SQL सर्वर प्रत्येक कथन को पार्स करना जानता है, जैसे कि यह जानता है कि यह कब समाप्त होता है, ऐसा लगता है कि कई लाइनों में लंबी लाइन को विभाजित करना, केवल newline/ carriage-return+ द्वारा अलग किया गया है line-feed, अनुचित नहीं लगता है। लेकिन यह किसी भी मामले में काम नहीं करता है।
PRINT 'Line1
Line2';
रिटर्न ("संदेश" टैब में):
Line1
Line2
और यह काफी समझ में आता है क्योंकि न्यूलाइन शाब्दिक / स्थिर है। लेकिन यह VARBINARY
भी एक के लिए काम नहीं करता है।
PRINT 0x1234
5678;
मुझे एक त्रुटि देता है।