Bonjour à tous,
Je suis bloqué sur cette requête récursive. A chaque exécution. L'erreur suivante m'est renvoyée:
Msg*240, Niveau*16, État*1, Procédure*Act_PathFinder3, Ligne*148
Les types ne correspondent pas entre la partie d'ancrage et la partie récursive dans la colonne "j_Way" de la requête récursive "journey".
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 create table #Temp_Def_Section_Runtime ( [Source] varchar(max) ,[Destination] varchar(max) ,[Type_ID] int ,[Groupe01] varchar(100) ,[Groupe02] varchar(100) )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ;WITH journey (j_Dest, j_Step, j_Type_ID, j_Way) AS ( SELECT DISTINCT Source ,0 ,0 ,cast (@Source as varchar(max)) FROM #Temp_Def_Section_Runtime WHERE Source = @Source UNION ALL SELECT destination ,departure.j_Step + 1 ,Type_ID ,cast(departure.j_Way +','+ cast(arrival.Destination as varchar(max)) as varchar(max)) FROM #Temp_Def_Section_Runtime AS arrival inner JOIN journey AS departure ON departure.j_Dest = arrival.Source
Je comprend bien que le problème vient d'une différence de format entre l'ancrage et la récursivité sur la colonne j_way mais je ne vois pas pourquoi...
J'ai essayé de nombreuses et différentes façons de poser le CAST as varchar mais le résultat est toujours le même.
Si j'utilise une table 'physique' à la place de la table temporaire précédemment décrite, cela fonctionne. A n'y rien comprendre !!!
Merci d'avance pour votre aide.
COrdialement
Partager