Bonjour,

Je souhaite mettre en place une double boucle via deux cursor.
Le problème c'est que lorsque j'utilise la variable du premier cursor dans le FROM d'affectation du deuxième cursor, je me fait jeter...

(Je cherche à boucler sur des tables ayant le même nom mais sur des serveurs différents)
(Je n'ai pas de problème de connexion avec ces différents serveurs >> Serveur liées OK et testé OK)

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
CREATE PROCEDURE spNomProcedure 
 
AS
	DECLARE @Id_Serveur AS VARCHAR(15);
 
	DECLARE SERVEUR_CURSOR CURSOR FOR
 
	SELECT Id_Serveur
	FROM   [NomBase].[dbo].[ListeServeur]
 
	OPEN SERVEUR_CURSOR
 
	FETCH NEXT FROM SERVEUR_CURSOR INTO @Id_Serveur  
 
	WHILE @@FETCH_STATUS = 0  
 
	BEGIN
 
		DECLARE @NonVariable VARCHAR (50) ;
 
		DECLARE Ligne_CURSOR CURSOR FOR
 
		SELECT @NonVariable
		FROM   [@Id_Serveur].[Nom_Base].[dbo].NomTable    
 
		/*  la variable @ dans le FROM ne passe pas... Dans le SELECT ou dans un WHERE c'est OK mais pas dans le FROM */
 
		OPEN Ligne_CURSOR
 
		FETCH NEXT FROM Ligne_CURSOR INTO @NonVariable 
 
		WHILE @@FETCH_STATUS = 0  
 
		BEGIN
 
			PRINT 'Le serveur : ' +@Id_Serveur+ ' // Le nom de la Table : NomTable  // LA valeru de NomVariable : '+ @NonVariable ;	   
 
		FETCH NEXT FROM Ligne_CURSOR INTO @NonVariable
		END
		CLOSE Ligne_CURSOR  
		DEALLOCATE Ligne_CURSOR
 
	FETCH NEXT FROM SERVEUR_CURSOR INTO @Id_Serveur
	END
	CLOSE SERVEUR_CURSOR  
	DEALLOCATE SERVEUR_CURSOR
 
GO
 
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
 
EXEC spNomProcedure ;
GO
Savez vous pourquoi cela ne marche pas ?
Auriez vous une idée pour résoudre mon problème ?

Par avance, un grand merci