Utilisez des paramètres table (TVP) pour transmettre efficacement des tableaux de paramètres aux procédures stockées
La transmission d'un tableau de paramètres est une tâche très courante lors de l'utilisation de procédures stockées. Cet article explique comment transmettre un tableau d'identifiants (ID) à une procédure stockée pour effectuer une opération spécifique.
Description du problème
Nous devons transmettre un tableau d'ID à une procédure stockée qui supprimera toutes les lignes du tableau à l'exception de celles qui correspondent aux ID du tableau.
Solution utilisant des paramètres table
Dans SQL Server 2008 et versions ultérieures, les paramètres table (TVP) constituent un moyen efficace de transmettre des tableaux aux procédures stockées. Voici comment implémenter cela à l'aide de TVP :
1. Créer TVP
Créez un TVP pour représenter le tableau d'ID :
<code class="language-sql">CREATE TYPE T1Ids AS Table ( t1Id INT );</code>
2. Créer une procédure stockée
Créez une procédure stockée à l'aide de TVP :
<code class="language-sql">CREATE PROCEDURE dbo.FindMatchingRowsInTable1( @Table1Ids AS T1Ids READONLY ) AS BEGIN -- 您的存储过程逻辑在此处 END</code>
3. Préparer les données TVP
Dans votre application, préparez les données TVP dans un DataTable :
<code class="language-csharp">DataTable t1Ids = new DataTable(); t1Ids.Columns.Add("t1Id", typeof(int)); foreach (int id in listOfIdsToFind) { t1Ids.Rows.Add(id); }</code>
4. Passer TVP à la procédure stockée
Lors de l'appel de la procédure stockée, passez TVP en paramètre :
<code class="language-csharp">SqlParameter sqlParameter = new SqlParameter("Table1Ids", t1Ids); findMatchingRowsInTable1.Parameters.Add(sqlParameter);</code>
5. Exécuter la procédure stockée
Exécutez la procédure stockée et traitez les résultats.
Avantages de l'utilisation de TVP
Cette approche simplifie la tâche d'exécution d'opérations complexes sur un ensemble de données en vous permettant de transmettre facilement un tableau de paramètres à une procédure stockée.
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!