LES CURSEURS SOUS SQL SERVER

EVITER LES CURSEURS, OUI MAIS… « N’utilisez pas les curseurs, ils ne sont pas performants » est une phrase qui revient souvent dans la bouche des DBA. Certes, une grande partie des traitements de boucle sont remplaçables par des traitements ensemblistes, d’autant plus que le moteur relationnel est optimisé pour ce type de tâche. Notons…

1

Renvoyer les N enregistrements d’une table jointe

Utilisation de la fonction CROSS APPLY Cette nouvelle fonction en plus d’être performante simplifie grandement l’écriture de certaines requêtes comme celui de retourner les n enregistrements d’une table jointe. SELECT CustomerID, L.SalesOrderID FROM Sales.Customer c CROSS APPLY ( SELECT top 5 SalesOrderID FROM Sales.SalesOrderHeader s WHERE s.CustomerID = c.CustomerID ORDER BY SalesOrderID DESC   )…

1

Faire une concaténation sur un résultat d’une requête

Premier cas : Concaténer le résultat d’une colonne sur une ligne Le principe est d’empiler les résultats d’un SELECT dans une variable. Prenons un exemple sur la table HumanResources.Department de la base exemple de SQL Server 2005, AdventureWorks. Concaténons le nom des départements. USE AdventureWorks DECLARE @DptName varchar(max); SET @DptName = ”; select @DptName= @DptName +…