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

एक संग्रहीत प्रक्रिया के लिए तार की सूची पास करें

यह वास्तव में आपके द्वारा पोस्ट किए गए लिंक का डुप्लिकेट है। मानों की सूची को पार्स करने की कोशिश करने के बजाय, एक टेबल-वैल्यू पैरामीटर पास करें।

पहले डेटाबेस में पैरामीटर का प्रकार बनाएं (केवल एक बार)।

CREATE TYPE [dbo].[IdList] AS TABLE(
    [Id] int NULL
);

फिर एक प्रक्रिया बनाएं जो इस पैरामीटर को स्वीकार करे:

CREATE PROCEDURE [dbo].[GetWorkspaceMapDetailsForUserByGroups]
    @workspaceID int,
    @groupIds IdList READONLY
AS
BEGIN
SELECT 
  m.*
FROM GeoAppMapDef m 
    inner join @groupIds on [email protected]
WHERE
    m.workspaceID = @workspaceID
    and m.IsDeleted = 0
END

क्लाइंट के पक्ष में, Id नामक एकल इंट-टाइप किए गए कॉलम के साथ डेटाटेबल बनाएं , इसे अपनी इच्छित आईडी से भरें और फिर इसे @groupIds के मान के रूप में उपयोग करें पैरामीटर

var table = new DataTable();
table.Columns.Add("Id", typeof(int));

for (int i = 0; i < 10; i++)
    table.Rows.Add(i);

var pList = new SqlParameter("@groupIds", SqlDbType.Structured);
pList.TypeName = "dbo.IdList";
pList.Value = table;

मैंने इसे कुछ संशोधनों के साथ डुप्लिकेट प्रश्न से कॉपी किया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या टेबल कॉलम समान होने पर EXCEPT जॉइन से तेज़ी से निष्पादित होता है?

  2. SQL सर्वर में DROP टेबल स्टेटमेंट को समझना

  3. एक और अपडेट किए गए कॉलम के आधार पर कॉलम अपडेट करना

  4. SQL सर्वर क्वेरी टाइम आउट कहां क्लॉज पर निर्भर करता है

  5. मैं वीएस 2010 में SQL डेटाबेस क्यों नहीं बना सकता?