परिदृश्य को तर्क के रूप में श्रेणीबद्ध स्ट्रिंग पारित नहीं कर सकता: एक संग्रहीत प्रक्रिया के लिए n तर्क पारित करने के लिए की आवश्यकता है। तर्क का एक प्रकार varchar(x)
की है। उस वर्चर तर्क को कुछ अन्य चरम चर से अलग किया जाना चाहिए। यह समस्या SQL सर्वर 2005 का उपयोग करती है, लेकिन यह व्यवहार SQL सर्वर के सभी संस्करणों पर लागू होता है।T-SQL: संग्रहीत प्रक्रिया
सेटअप:
DECLARE @MyString varchar(500), @MyBar varchar(10), @MyFoo varchar(10)
SELECT @MyBar= 'baz '
SELECT @MyFoo= 'bat '
-- try calling this stored procedure!
EXEC DoSomeWork @MsgID, 'Hello ' + @MyBar + '" world! "' + @MyFoo + '".'
यह एसक्यूएल सर्वर में अपवाद पैदा करता है: Incorrect syntax near '+'
। आमतौर पर आप सोच सकते हैं कि डेटाप्रकार गलत होगा (अर्थात चर विभिन्न प्रकार के होते हैं, लेकिन है कि कोई दूसरा त्रुटि संदेश का उत्पादन होगा)।
SELECT @MyString= 'Hello ' + @MyBar + '" world! "' + @MyFoo + '".';
EXEC DoSomeWork @ID, @MyString
प्रश्न:
यहाँ एक सही कार्यान्वयन कि त्रुटि के बिना संकलित है क्यों यह है कि T-SQL एक तर्क के रूप एक varchar के संयोजन संभाल सकते है? यह प्रकार जानता है, क्योंकि उन्हें वक्रार के रूप में ठीक से घोषित किया गया था।
इस टिप्पणी में निर्दिष्ट वेबसाइट अब नहीं है। – Buggieboy
धन्यवाद। मैंने एमएसडीएन का उपयोग करने के लिए लिंक अपडेट किए हैं। – SurroundedByFish