Maison >base de données >tutoriel mysql >Comment puis-je transmettre efficacement une liste à une procédure stockée SQL ?
Liste de passage
Traditionnellement, transmettre plusieurs éléments à une procédure stockée SQL impliquait une manipulation fastidieuse de chaînes et la concaténation d'ID séparés par des délimiteurs. Cette approche peut s’avérer sous-optimale en termes de performances et de flexibilité. Cependant, avec l'avènement de SQL Server 2008, une nouvelle fonctionnalité appelée « paramètres table » est apparue comme une solution supérieure.
En utilisant des paramètres table, les développeurs peuvent définir un type de table défini par l'utilisateur dans le base de données, puis transmettez une liste de valeurs de ce type en tant que paramètre unique à la procédure stockée. Cette approche élimine le besoin de concaténation manuelle des chaînes et offre plusieurs avantages :
Pour tirer parti des opérations table paramètres, les développeurs doivent créer un type de table défini par l'utilisateur dans la base de données, puis modifier la procédure stockée pour accepter ce type comme paramètre. L'extrait de code ci-dessous montre comment mettre en œuvre cette approche :
Code C# :
public void AddItemsToReport(string connStr, int Id, List<int> itemList) { using (SqlConnection _connection = new SqlConnection(connStr)) { using (SqlCommand _sqlcommand = new SqlCommand("AddItemsToReport", _connection)) { _sqlcommand.CommandType = CommandType.StoredProcedure; _sqlcommand.Parameters.AddWithValue("ReportId", Id); _sqlcommand.Parameters.AddWithValue("Items", itemList); _connection.Open(); _sqlcommand.ExecuteNonQuery(); } } }
Procédure stockée SQL :
CREATE PROCEDURE AddItemsToReport (@ReportId int, @Items IntArray) AS BEGIN -- Insert each item into ReportItem table INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Item FROM @Items END
Dans cet exemple, le type "IntArray" est un type de table défini par l'utilisateur qui correspond au Liste
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!