Maison > base de données > tutoriel mysql > Comment transmettre efficacement des tableaux à des procédures stockées à l'aide de paramètres table (TVP) ?

Comment transmettre efficacement des tableaux à des procédures stockées à l'aide de paramètres table (TVP) ?

Linda Hamilton
Libérer: 2025-01-10 17:23:43
original
824 Les gens l'ont consulté

Efficiently Passing Arrays to Stored Procedures Using Table-Valued Parameters (TVPs)

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal