आप एक एकल एसक्यूएल पैरामीटर के रूप में एक सूची पास नहीं कर सकते हैं। आप स्ट्रिंग कर सकते हैं। जॉइन (',') GUIDS जैसे कि "0000-0000-0000-0000, 1111-1111-1111-1111" लेकिन यह डेटाबेस ओवरहेड और उप-इष्टतम पर वास्तव में उच्च होगा। और आपको पूरी स्ट्रिंग को एकल समेकित गतिशील कथन के रूप में पास करना होगा, आप इसे पैरामीटर के रूप में नहीं जोड़ सकते हैं।
प्रश्न:
आप कहाँ आईडी से निष्क्रिय ग्राहकों का प्रतिनिधित्व करते हैं की अपनी सूची मिल रहा है?
मेरा सुझाव समस्या से थोड़ा अलग तरीके से संपर्क करना है। , कुछ डेटाबेस में वह सब तर्क ले जाएँ की तरह:
Create procedure usp_DeactivateCustomers
@inactive varchar(50) /*or whatever values are required to identify inactive customers*/
AS
UPDATE Customer SET c.Active = 0
FROM Customer c JOIN tableB b ON c.CustomerID = b.CustomerID
WHERE b.someField = @inactive
और एक संग्रहीत प्रक्रिया के रूप में यह कहते हैं:
public void InactiveCustomers(string inactive)
{
//...
myAdoCommand.CommandText =
"usp_DeactivateCustomers";
myAdoCommand.Parameters["@inactive"].Value = inactive;
//...
}
तो एक डेटाबेस में GUID के अस्तित्व की एक सूची है, क्यों की आवश्यकता है करने के लिए: उन्हें खोजें; उन्हें एक सामान्य सूची में डाल दें; एक सीएसवी/एक्सएमएल/टेबल वैरिएबल में सूची को खोलें, बस उन्हें वापस डीबी में पेश करने के लिए ????? वे पहले से ही वहाँ हैं! क्या मैं कुछ भूल रहा हूँ?
स्रोत
2008-09-22 12:31:09
http://www.sommarskog.se/arrays-in-sql-2005.html और http://www.sommarskog.se/arrays-in-sql-2000.html संदर्भ इस विषय पर पढ़े गए हैं। वे व्यास की तुलना में अधिक विस्तार से पेशेवरों और विपक्षों पर भी चर्चा करते हैं। –
एसक्यूएल सर्वर 2008 के लिए ई। सोमरस्कॉग के आलेखों का एक नया संस्करण भी है (जो तालिका-मूल्यवान पैरामीटर्स पर केंद्रित है): http://www.sommarskog.se/arrays-in-sql-2008.html। मुझे लगता है कि @ RemusRusanu की टिप्पणी अपने उत्तर का हकदार है; मैंने ऐसा पोस्ट किया है: http://stackoverflow.com/a/31110710/240733 – stakx