sql >> Database >  >> RDS >> Sqlserver

Lijst met strings doorgeven aan een opgeslagen procedure

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.



  1. Hoe LocalTime op te slaan in de slaapstand

  2. Hoe kafka-onderwerp naar orakel te laten zinken met behulp van kafka connect?

  3. Kan OCI_CONNECT een ORA-01438:waarde veroorzaken die groter is dan de opgegeven precisie die is toegestaan ​​voor deze kolom?

  4. Is het mogelijk om twee kolommen in dezelfde zoekopdracht te tellen?