Maison >base de données >tutoriel mysql >Comment puis-je appeler des procédures stockées pour chaque ligne du tableau sans utiliser de curseurs ?
Appel de procédures stockées pour les lignes d'un tableau sans curseurs
L'utilisation de curseurs pour appeler des procédures stockées pour chaque ligne d'un tableau est une approche courante. Cependant, il existe des méthodes alternatives qui peuvent offrir des avantages en termes de performances et de clarté du code.
L'une de ces méthodes implique une approche basée sur des ensembles, qui évite complètement le besoin de curseurs. Cette approche convient aux scénarios dans lesquels les colonnes d'une ligne peuvent être directement fournies comme paramètres d'entrée à la procédure stockée.
L'extrait de code suivant montre comment y parvenir :
SQL
-- Declare & init (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
Cet extrait commence par initialiser une variable @CustomerID à 0. Il entre ensuite dans une boucle WHILE qui parcourt les lignes client dans l'ordre croissant de CustomerID, récupérant l'ID du client suivant dans @CustomerID à chaque itération.
Une fois l'ID d'un client obtenu, la procédure stockée YOURSPROC est invoquée en utilisant cet ID comme paramètre. La boucle continue jusqu'à ce qu'aucun client ne soit trouvé dans le tableau.
L'utilisation de cette approche peut offrir des performances améliorées sur les curseurs dans certains scénarios, et elle fournit également une structure de code plus concise et lisible.
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!