संभव डुप्लिकेट एक संग्रहीत प्रक्रिया में में खंड बनाने:
Need help in dynamic query with IN Clauseगतिशील रूप
मैं एसक्यूएल सर्वर 2008 का उपयोग कर रहा है और इस समस्या यह है कि मैं का सामना करना पड़ रहा है। मेरे पास एक कॉलम कंपनी नाम वाली कार है। अब मैं एक संग्रहीत प्रक्रिया है कि इस
CREATE PROCEDURE FindCars (@CompanyNames varchar(500)) AS SELECT * FROM Cars WHERE Company IN (@CompanyNames)
तरह दिखता है मैं कुछ इस तरह की कोशिश की और
DECLARE @CompanyNames varchar(500) SET @CompanyNames = '''Ford'',''BMW''' exec FindCars @CompanyNames
मैं किसी भी पंक्तियों लौटे मिल न विफल रहा है। जब मैं निम्नलिखित
DECLARE @CompanyNames varchar(500) SET @CompanyNames = '''Ford'',''BMW''' Select @CompanyNames
मैं निम्नलिखित परिणाम
'Ford','BMW'
हो और अगर मैं संग्रहीत प्रक्रिया के अंदर का चयन करें बयान में यह मान के स्थान पर, यह
SELECT * FROM Cars where Company in ('Ford','BMW')
इस प्रकार मैं काम करता है कर लगता है कि संग्रहीत प्रक्रिया 'Ford','BMW'
का इलाज एक सरणी के बजाय एक स्ट्रिंग के रूप में कर रही है। क्या कोई मेरी मदद कर सकता है। मैं संग्रहीत प्रक्रिया के अंदर चयन कथन के IN खंड में आवश्यक स्ट्रिंग/सरणी को गतिशील रूप से कैसे बना सकता हूं।
सिर्फ एक बिंदु जोड़ने के लिए, मुझे लगता है कि यह बेहतर है 'चयन * कारों से आंतरिक में शामिल हों ( \t dbo.split_string (@input_string) से आइटम चुनें) के पर।आइटम = कंपनी' क्योंकि आप 'IN' भविष्यवाणी –
का उपयोग करके पुनरावृत्ति कर रहे हैं पहली विधि वह है जिसे मैं अनुशंसा करता हूं, आप यहां एक अच्छा स्प्लिट फ़ंक्शन पा सकते हैं: [http://www.sqlservercentral.com/articles/Tally+Table /72993/](http://www.sqlservercentral.com/articles/Tally+Table/72993/) – lennin92