Maison >base de données >tutoriel mysql >Les procédures stockées peuvent-elles être exécutées pour chaque ligne du tableau sans curseurs ?
Exécuter des procédures stockées pour chaque ligne de table sans avoir besoin de curseurs
Lorsque nous sommes confrontés à la tâche d'appeler une procédure stockée pour chaque ligne de un tableau, il est naturel d’envisager l’approche consistant à parcourir les lignes à l’aide d’un curseur. Cependant, il est possible de réaliser cette tâche sans compter sur des curseurs.
Utilisation d'une approche basée sur des ensembles
Dans une approche basée sur des ensembles, nous visons à trouver un moyen d’effectuer l’opération pour toutes les lignes simultanément. Par exemple, si notre objectif était de mettre à jour une colonne pour chaque ligne d'un tableau, nous pourrions exploiter une instruction UPDATE avec une clause WHERE appropriée pour modifier les enregistrements concernés en une seule fois.
Cas spécifique : Itération sur les colonnes de ligne
Cependant, lorsqu'il s'agit de scénarios dans lesquels les colonnes d'une ligne doivent être utilisées comme paramètres d'entrée pour une procédure stockée, une approche légèrement différente est requis. Comme décrit dans la réponse fournie :
Code Exemple
L'extrait de code fourni illustre comment cette approche peut être mise en œuvre :
-- Declare & initialize (2008 syntax) DECLARE @CustomerID INT = 0 -- Iterate over all customers WHILE (1 = 1) BEGIN -- Get next customerId SELECT TOP 1 @CustomerID = CustomerID FROM Sales.Customer WHERE CustomerID > @CustomerId ORDER BY CustomerID -- Exit loop if no more customers IF @@ROWCOUNT = 0 BREAK; -- call your sproc EXEC dbo.YOURSPROC @CustomerId END
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!