C# SQL Server : Passer une liste à une procédure stockée
En C#, il est possible d'appeler une procédure stockée SQL Server via du code . Cependant, transmettre une liste de chaînes n’est pas simple. Cet article explore la méthode alternative consistant à utiliser un type de table défini par l'utilisateur (UDT) à la place.
Création d'un type de table défini par l'utilisateur (UDT)
SQL Server 2008 a introduit les UDT , qui fournissent un moyen structuré de transmettre des types de données complexes aux procédures stockées. Pour créer un UDT pour une liste de chaînes :
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
Modification de la procédure stockée
Pour accepter le paramètre UDT, la procédure stockée doit être modifiée comme suit :
CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Just return the items we passed in SELECT l.Item FROM @list l; END
Passer la liste depuis C# Code
Enfin, voici comment transmettre la liste à partir du code C# :
using System.Data; var con = new SqlConnection(connstring); con.Open(); using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con)) { using (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; cmd.Parameters.Add(pList); using (var dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } } }
Conclusion
L'utilisation d'un UDT est un moyen efficace moyen de transmettre une liste de chaînes à une procédure stockée SQL Server à partir du code C#. En suivant les étapes décrites ci-dessus, les développeurs peuvent facilement gérer des listes de chaînes dynamiques et volumineuses dans leurs interactions de base de données.
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!