यह वास्तव में आपके द्वारा पोस्ट किए गए लिंक का डुप्लिकेट है। मानों की सूची को पार्स करने की कोशिश करने के बजाय, एक टेबल-वैल्यू पैरामीटर पास करें।
पहले डेटाबेस में पैरामीटर का प्रकार बनाएं (केवल एक बार)।
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;
मैंने इसे कुछ संशोधनों के साथ डुप्लिकेट प्रश्न से कॉपी किया है।