Utilisation de paramètres table (TVP) pour transmettre des tableaux aux procédures stockées
Les applications de base de données nécessitent fréquemment de transmettre des tableaux ou des listes de valeurs à des procédures stockées. Pour SQL Server 2008 et versions ultérieures, les paramètres table (TVP) offrent la solution la plus efficace.
Création d'une procédure stockée avec un TVP
Il s'agit d'abord de définir le type TVP, puis de créer la procédure stockée :
<code class="language-sql">CREATE TYPE T1Ids AS Table ( t1Id INT ); CREATE PROCEDURE dbo.FindMatchingRowsInTable1 (@Table1Ids AS T1Ids READONLY) AS BEGIN SET NOCOUNT ON; SELECT Table1.t1Id FROM dbo.Table1 AS Table1 JOIN @Table1Ids AS paramTable1Ids ON Table1.t1Id = paramTable1Ids.t1Id; END</code>
Appel de la procédure stockée
Dans votre application (exemple en utilisant C#), préparez les données sous forme de DataTable, établissez la connexion à la base de données et créez l'objet de commande :
<code class="language-csharp">DataTable t1Ids = new DataTable(); t1Ids.Columns.Add("t1Id", typeof(int)); int[] listOfIdsToFind = new[] { 1, 5, 9 }; foreach (int id in listOfIdsToFind) { t1Ids.Rows.Add(id); } SqlConnection testbedConnection = new SqlConnection( @"Data Source=.\SQLExpress;Initial Catalog=TestbedDb;Persist Security Info=True;User ID=testbedUser;Password=letmein12;Connect Timeout=5"); SqlCommand findMatchingRowsInTable1 = new SqlCommand("dbo.FindMatchingRowsInTable1", testbedConnection); findMatchingRowsInTable1.CommandType = CommandType.StoredProcedure; SqlParameter sqlParameter = new SqlParameter("Table1Ids", t1Ids); findMatchingRowsInTable1.Parameters.Add(sqlParameter);</code>
Enfin, exécutez la procédure stockée et gérez les résultats :
<code class="language-csharp">SqlDataReader sqlDataReader = findMatchingRowsInTable1.ExecuteReader(); while (sqlDataReader.Read()) { Console.WriteLine("Matching t1ID: {0}", sqlDataReader["t1Id"]); }</code>
Les TVP offrent une méthode efficace et sécurisée pour transmettre des tableaux ou des listes à des procédures stockées, améliorant ainsi les performances et la maintenabilité des applications 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!