Dit is echt een duplicaat van de links die je hebt gepost. In plaats van te proberen een lijst met waarden te ontleden, geef je een tabelwaardeparameter door.
Maak eerst het parametertype in de database aan (slechts één keer).
CREATE TYPE [dbo].[IdList] AS TABLE(
[Id] int NULL
);
Maak vervolgens een procedure die deze parameter accepteert:
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
Maak aan de kant van de klant een DataTable met een enkele int-getypte kolom genaamd Id
, vul het met de gewenste ID's en gebruik het als de waarde van de @groupIds
parameter
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;
Ik heb dit gekopieerd van de dubbele vraag met een paar aanpassingen.