Maison > base de données > tutoriel mysql > Comment transmettre une liste de chaînes à une procédure stockée SQL Server à l'aide d'un type de table défini par l'utilisateur ?

Comment transmettre une liste de chaînes à une procédure stockée SQL Server à l'aide d'un type de table défini par l'utilisateur ?

Barbara Streisand
Libérer: 2025-01-13 10:02:42
original
131 Les gens l'ont consulté

How to Pass a List of Strings to a SQL Server Stored Procedure Using a User-Defined Table Type?

Passer une liste de chaînes à une procédure stockée SQL Server à l'aide d'un type de table défini par l'utilisateur

Lors de l'appel d'une procédure stockée SQL Server à partir de C#, vous devrez peut-être transmettre une liste de chaînes en tant que paramètres. Alors que les paramètres standard suffisent pour gérer des types de données simples, pour les structures de données complexes telles que les listes, une approche plus sophistiquée est requise.

Pour transmettre une liste de chaînes, nous pouvons exploiter la fonctionnalité UDTT (User-Defined Table Type) de SQL Server. Cette fonctionnalité nous permet de créer un type de données personnalisé qui simule une table pour stocker une collection de données.

Créer un type de tableau défini par l'utilisateur

Tout d'abord, nous devons créer un type de table défini par l'utilisateur (UDTT) :

<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);</code>
Copier après la connexion

Cet UDTT définit une seule colonne nommée "Item" pour contenir les chaînes.

Modifier la procédure stockée

Ensuite, nous modifions la procédure stockée pour accepter les paramètres UDTT :

<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- 只返回我们传入的项目
    SELECT l.Item FROM @list l;
END</code>
Copier après la connexion

Remplir UDTT en C#

En C#, nous utilisons DataTable pour remplir UDTT :

<code class="language-csharp">using (var table = new DataTable()) {
    table.Columns.Add("Item", typeof(string));

    // ...此处添加循环填充字符串列表到DataTable的代码...

    SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured);
    pList.Value = table;
}</code>
Copier après la connexion

Transmettre les paramètres UDTT aux procédures stockées

Enfin, on passe les paramètres UDTT à la procédure stockée :

<code class="language-csharp">using (var cmd = new SqlCommand("exec sp_UseStringList @list", con)) {
    cmd.Parameters.Add(pList);

    using (var dr = cmd.ExecuteReader()) {
        while (dr.Read())
            Console.WriteLine(dr["Item"].ToString());
    }
}</code>
Copier après la connexion

Cette approche nous permet de transmettre efficacement une liste de chaînes à une procédure stockée SQL Server.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal