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# ?

Comment transmettre efficacement une liste de chaînes dynamiques à une procédure stockée SQL Server à partir de C# ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 18:44:38462parcourir

How to Efficiently Pass a Dynamic String List to a SQL Server Stored Procedure from C#?

C# SQL Server - Passer une liste de chaînes dynamiques à une procédure stockée

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn