सिस्टम संग्रहीत कार्यविधि के लिए पहला तर्क sp_helptext
है:
[
@objname
= ] 'name'
उपयोगकर्ता-परिभाषित, स्कीमा-स्कॉप्ड ऑब्जेक्ट का योग्य या अयोग्य नाम है। एक योग्य वस्तु निर्दिष्ट होने पर ही उद्धरण चिह्नों की आवश्यकता होती है। यदि डेटाबेस नाम सहित एक पूरी तरह से योग्य नाम प्रदान किया जाता है, तो डेटाबेस नाम वर्तमान डेटाबेस का नाम होना चाहिए। वर्तमान डेटाबेस में ऑब्जेक्ट होना चाहिए। नाम है nvarchar(776)
, बिना किसी डिफ़ॉल्ट के।
इसके अलावा, डेलिफ़ाइड आइडेंटिफ़ायर (डेटाबेस इंजन) के लिए दस्तावेज बताता है:
SQL सर्वर में पैरामीटर के रूप में पहचानकर्ता का उपयोग करना
कई सिस्टम संग्रहीत कार्यविधियाँ, फ़ंक्शन और DBCC कथन पैरामीटर के रूप में ऑब्जेक्ट नाम लेते हैं। इनमें से कुछ पैरामीटर ऑब्जेक्ट ऑब्जेक्ट नामों को स्वीकार करते हैं, जबकि अन्य केवल एकल-भाग नामों को स्वीकार करते हैं। एकल-भाग या मल्टीपार्ट नाम अपेक्षित है या नहीं यह निर्धारित करता है कि SQL सर्वर द्वारा पैरामीटर को पार्स और आंतरिक रूप से कैसे उपयोग किया जाता है।
एकल-भाग पैरामीटर नाम
यदि पैरामीटर एकल-भाग पहचानकर्ता है, तो नाम निम्नलिखित तरीकों से निर्दिष्ट किया जा सकता है:
- उद्धरण चिह्नों या सीमांकक के बिना
- एकल उद्धरण चिह्नों में संलग्न
- दोहरे उद्धरण चिह्नों में संलग्न है
- कोष्ठक में संलग्न
मल्टीपार्ट पैरामीटर नाम
मल्टीपार्ट नाम योग्य नाम हैं जिनमें डेटाबेस या स्कीमा नाम और ऑब्जेक्ट नाम भी शामिल हैं। जब एक मल्टीपार्ट नाम एक पैरामीटर के रूप में उपयोग किया जाता है, तो SQL सर्वर को आवश्यकता होती है कि मल्टीपार्ट नाम बनाने वाली पूरी स्ट्रिंग एकल उद्धरण चिह्नों के एक समूह में संलग्न हो।
sp_helptext
एकल-भाग (अयोग्य) और मल्टीपार्ट (योग्य) ऑब्जेक्ट नाम दोनों को स्वीकार करने का पहला तर्क ।
T-SQL पार्सर व्याख्या आइटम के बाद तो sp_helptext
एक के रूप में केवल एक नाम (ऊपर चार बुलेट बिंदुओं के अनुसार) है, जिसके परिणामस्वरूप नाम प्रक्रिया द्वारा की उम्मीद (स्ट्रिंग प्रकार) तर्क मान के रूप में पारित कर दिया है।
जब पार्सर इसे मल्टीपार्ट नाम के रूप में देखता है , तो पाठ को एकल उद्धरण चिह्नों से घिरा होना आवश्यक है।
मल्टीपार्ट नाम की मुख्य विशेषता एक .
विभाजक (किसी भी सीमांकक के बाहर) है।
प्रश्न के इन उदाहरणों को एकल-भाग नामों के रूप में सफलतापूर्वक व्याख्या किया गया है:
myproc - सिंगल-पार्ट (उद्धरण चिह्नों या सीमांकक के बिना - बुलेट # 1)
[myproc] - सिंगल-पार्ट (ब्रैकेट में - बुलेट # 4)
'myproc' - सिंगल-पार्ट (एकल उद्धरण चिह्नों में - बुलेट # 2)
'dbo.myproc' - बहुखण्डीय आवश्यक एकल उद्धरण चिह्न के साथ
[dbo.myproc] - एकल-भाग (कोष्ठक में - बुलेट # 4)
प्रश्न से अंतिम दो उदाहरणों को मल्टीपार्ट पैरामीटर नाम (उजागर .
विभाजक के कारण ) के रूप में देखा गया है। वे एक त्रुटि उत्पन्न करते हैं क्योंकि उनके पास एक उद्धरण चिह्नों की आवश्यकता नहीं होती है:
dbo.myproc - आवश्यक एकल उद्धरण चिह्नों के बिना मल्टीपार्ट करें
[dbo]। [myproc] - आवश्यक एकल उद्धरण चिह्नों के बिना मल्टीपार्ट करें
दोहरे उद्धरण चिह्नों का उपयोग करने वाला यह अतिरिक्त उदाहरण सफल है:
"dbo.myproc" - सिंगल-पार्ट (दोहरे उद्धरण चिह्नों में - बुलेट पॉइंट # 3)
ध्यान दें कि इसे एक एकल एकल नाम के रूप में सफलतापूर्वक (प्रक्रिया पैरामीटर मान के लिए) व्याख्यायित किया जाता है, लेकिन प्रक्रिया कोड इसे लचीले ढंग से (उपयोग PARSENAME
और OBJECTID
) प्राप्त करता है ।
ब्याज के अंतिम बिंदु के रूप में, ध्यान दें कि यहां दोहरे उद्धरण चिह्नों का उपयोग करना सेटिंग पर निर्भर नहीं करता है QUOTED_IDENTIFIER
।