Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक SQL पैरामीटर के लिए एकाधिक मान पास करना

इसे करने के कुछ तरीके हैं। आप इस उदाहरण की तरह एक XML ब्लॉब के रूप में पैरामीटर में पास कर सकते हैं:

CREATE PROCEDURE [dbo].[uspGetCustomersXML]
    @CustomerIDs XML
AS
BEGIN
SELECT c.ID, c.Name
FROM [dbo].[Customer] c
JOIN @CustomerIDs.nodes('IDList/ID') AS x(Item) ON c.ID = Item.value('.', 'int' )
END
GO

--Example Use:
EXECUTE [dbo].[uspGetCustomersXML] '<IDList><ID>1</ID><ID>10</ID><ID>100</ID></IDList>'

या मानों को CSV के रूप में पास करें और मानों को तालिका चर में विभाजित करने के लिए स्प्लिट फ़ंक्शन का उपयोग करें (वहां बहुत सारे स्प्लिट फ़ंक्शन हैं, त्वरित खोज एक को फेंक देगी)।

CREATE PROCEDURE [dbo].[uspGetCustomersCSV]
    @CustomerIDs VARCHAR(8000)
AS
BEGIN
SELECT c.Id, c.Name
FROM [dbo].[Customer] c
JOIN dbo.fnSplit(@CustomerIDs, ',') t ON c.Id = t.item
END
GO

--Example Use:
EXECUTE [dbo].[uspGetCustomersCSV] '1,10,100'

यदि आप SQL 2008 या बाद के संस्करण का उपयोग कर रहे थे, तो आप टेबल वैल्यूड पैरामीटर्स का उपयोग कर सकते थे जो आपको एक पैरामीटर के रूप में एक टेबल वैरिएबल पास करने की अनुमति देता है। मैंने ब्लॉग किया त्वरित प्रदर्शन तुलना के साथ इन 3 दृष्टिकोणों के बारे में कुछ समय पहले।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में TAB वर्ण वाले फ़ील्ड कैसे खोजें

  2. एसक्यूएल सर्वर में जहां क्लॉज में उपनाम कॉलम नाम का उपयोग कैसे करें

  3. SQL सर्वर (T-SQL) में किसी उपयोगकर्ता के लिए डिफ़ॉल्ट डेटाबेस मेल प्रोफ़ाइल कैसे बदलें

  4. एक्सेल से SQLServer में 1000 से अधिक पंक्तियों को सम्मिलित करना

  5. एक संग्रहीत प्रक्रिया के परिणाम सेट (T-SQL) से कॉलम के सबसेट का चयन कैसे करें