Maison >développement back-end >C++ >Comment transmettre efficacement une liste de chaînes dynamiques à une procédure stockée SQL Server à partir de C# ?
La requête de Brett consiste à incorporer une liste dynamique de chaînes dans une procédure stockée SQL Server. Le défi consiste à transmettre efficacement cette liste sans compromettre les performances.
L'approche traditionnelle consistant à concaténer des chaînes dans une liste séparée par des virgules présente des limites, en particulier avec des ensembles de données plus volumineux. Cependant, il existe des options plus efficaces.
Type de table défini par l'utilisateur (UDT) :
SQL Server 2008 a introduit les types de table définis par l'utilisateur (UDT), qui vous permettent pour créer un type de données personnalisé pouvant stocker des données tabulaires. Vous pouvez créer un UDT appelé « StringList » et l'utiliser dans votre procédure stockée.
SQL :
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
Le code C# suivant montre comment utiliser cet UDT :
var table = new DataTable(); table.Columns.Add("Item", typeof(string)); for (int i = 0; i < 10; i++) table.Rows.Add("Item " + i.ToString()); var pList = new SqlParameter("@list", SqlDbType.Structured); pList.TypeName = "dbo.StringList"; pList.Value = table;
Dans la procédure stockée, vous pouvez accéder à la liste en utilisant :
CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN SELECT l.Item FROM @list l; END
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!