1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| ALTER PROCEDURE [dbo].[chemin2]
--paramètres
@org varchar(50),
@dest varchar(50)
AS
BEGIN
SET NOCOUNT ON;
WITH step (destination, etapes) -- Vue temporaire
AS
--première requête = point de départ de la récursivité
(SELECT lieu1, CAST(@org AS VARCHAR(MAX))
FROM Liens_lieux
WHERE lieu1 = @org
UNION ALL
--deuxième requête = point d'arrêt de la récursivité
SELECT lieu2 , depart.etapes + ', ' + arrivee.lieu2
FROM Liens_lieux AS arrivee
INNER JOIN step AS depart --cycle de récursion
ON depart.destination = arrivee.lieu1)
--affichage
SELECT etapes
FROM step
WHERE destination = @dest
END |
Partager