sql >> Databáze >  >> RDS >> Sqlserver

Předat seznam řetězců uložené proceduře

Toto je skutečně duplikát odkazů, které jste zveřejnili. Místo pokusu o analýzu seznamu hodnot předejte parametr s hodnotou tabulky.

Nejprve vytvořte typ parametru v databázi (pouze jednou).

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

Poté vytvořte proceduru, která tento parametr přijímá:

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

Na straně klienta vytvořte DataTable s jedním sloupcem typu int s názvem Id , vyplňte jej požadovanými ID a poté jej použijte jako hodnotu @groupIds parametr

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;

Zkopíroval jsem to z duplicitní otázky s několika úpravami.



  1. SQL dotaz pro získání hodnoty přesnosti sloupce

  2. Jak napodobit Oracle Materialized Views na MS SQL Server?

  3. MySQL - Přejmenovat sloupec

  4. Řešení selhání komunikačního spojení pomocí JDBC a MySQL