मैं एक अनुमान लूंगा और कहूंगा कि यह 'कैसे' है कि आप मल्टी वैल्यू पैरामीटर को पास कर रहे हैं। व्यक्तिगत रूप से एसएसआरएस के साथ काम करते समय मैं विचारों, तालिका कार्यों का उपयोग करता हूं, या बस चयन करता हूं क्योंकि एसएसआरएस मूल रूप से समझ सकता है कि यह:
Where thing in (@Thing)
असल में इसका मतलब SSMS में है:
Where thing in (@Thing.Value1, @Thing.Value2, @Thing.Value3, etc...)
मैं अनुमान लगा रहा हूं कि आपकी खरीद एक स्ट्रिंग ले रही है जो वास्तव में अल्पविराम से अलग की गई सरणी है। जब आप एक पैरामीटर करते हैं जो '1,2,3,4' जैसे स्ट्रिंग सरणी लेता है और आप प्रक्रिया को 'टेक्स्ट' पैरामीटर जैसी किसी चीज़ के साथ संबोधित कर रहे हैं, जो आपके द्वारा निर्दिष्ट किए गए कई मानों को स्वीकार करता है या एक क्वेरी से प्राप्त करता है जिसकी आपको अनिवार्य रूप से आवश्यकता होती है। शामिल हों' पैरामीटर यदि आपकी प्रक्रिया एक स्ट्रिंग का मान लेती है जिसमें सरणी होती है। ईजी:dbo.test नामक प्रोक पैरामीटर आईडी के लिए मान 1,2,4 के लिए पंक्तियों को वापस करने के लिए निष्पादित करता है जैसे दिखाया गया है:
exec dbo.test @ids = '1,2,4'
अगर मैं इस मूल्य के साथ एसएसआरएस में खरीद चलाना चाहता था और मेरे पास 'आईडीएस' नामक एक बहु मूल्य पैरामीटर था, तो मुझे एसएसआरएस में एक समारोह में मैन्युअल रूप से सरणी को इकट्ठा करना होगा जैसे:
=JOIN(Parameters!IDS.Value, ",")
अनिवार्य रूप से proc को अल्पविराम से अलग किए गए मानों की श्रृंखला में एकाधिक मानों को एक साथ जोड़कर पैरामीटर 'आईडीएस' चलाने के लिए कह रहा है। आप इसे बाएं फलक पर डेटासेट में करते हैं जहां यह पैरामीटर निर्दिष्ट करने के बजाय 'पैरामीटर' सूचीबद्ध करता है क्योंकि यह [@IDS] जैसा है, आप इसके बजाय 'Fx' पर क्लिक करते हैं और ऊपर दिए गए फ़ंक्शन में डालते हैं।
इस कारण से मैं विचारों, चयनों और तालिका कार्यों का एक बड़ा समर्थक हूं क्योंकि आप इसका ख्याल रखने के लिए विधेय तर्क का उपयोग कर सकते हैं।