Ce guide montre comment transmettre une liste de chaînes en tant que paramètre à une procédure stockée SQL Server à partir de votre application C#. Cette méthode utilise un type de table défini par l'utilisateur (UDTT), adapté à SQL Server 2008 et versions ultérieures.
Tout d'abord, créez un UDTT dans SQL Server pour représenter votre liste de chaînes :
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
Ensuite, modifiez votre procédure stockée pour accepter l'UDTT en entrée :
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Process the string list SELECT l.Item FROM @list l; END</code>
Voici comment utiliser l'UDTT dans votre code C# :
<code class="language-csharp">using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("sp_UseStringList", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@list", CreateStringListTable(new List<string> { "Apple", "Banana", "Orange" })); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Process each string from the reader string item = reader["Item"].ToString(); Console.WriteLine(item); } } } } //Helper function to create the DataTable private DataTable CreateStringListTable(List<string> stringList) { DataTable dt = new DataTable(); dt.Columns.Add("Item", typeof(string)); foreach (string str in stringList) { dt.Rows.Add(str); } return dt; }</code>
À des fins de tests, vous pouvez exécuter la procédure stockée directement dans SQL Server Management Studio (SSMS) comme ceci :
<code class="language-sql">DECLARE @list AS StringList; INSERT INTO @list VALUES ('Apple'); INSERT INTO @list VALUES ('Banana'); INSERT INTO @list VALUES ('Orange'); EXEC sp_UseStringList @list;</code>
Cette approche offre un moyen robuste et efficace de gérer des listes de chaînes lors de l'interaction avec les procédures stockées SQL Server à partir de vos applications C#. L'utilisation d'un UDTT garantit l'intégrité des données et améliore les performances par rapport à d'autres méthodes.
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!