Bonjour à tous,

Je dois exporter une table (dont le nom des champs met inconnues à part la clef primaire 'IdBDDDATA') dans un fichier pour le fournir au client tous les jours sur un serveur ftp.

Pour écrire les données dans le fichier, pas de problème. J'utile les procédures données par SQLpro : http://www.developpez.net/forums/showthread.php?t=83953

Mais mon soucis est au niveau de la récupération des données :
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
 
	DECLARE @colonne varchar(30)	
	DECLARE @Ligne varchar(1000)
 
	DECLARE @TABLE_NAME varchar(30)
	SET @TABLE_NAME = 'BDDDATA'
 
	--PRINT @TABLE_NAME
 
	DECLARE @sql varchar(1000)
 
	DECLARE @IdBDDDATA numeric
 
	DECLARE Cursor_Enreg CURSOR FOR SELECT IdBDDDATA FROM @TABLE_NAME ORDER BY IdBDDDATA
 
	OPEN Cursor_Enreg
 
	FETCH next FROM Cursor_Enreg INTO @IdBDDDATA
 
	WHILE @@fetch_status = 0 
	BEGIN
 
		SET @Ligne ='"'
 
		DECLARE Cursor_NameCol CURSOR LOCAL FOR 
		SELECT   COLUMN_NAME
		FROM INFORMATION_SCHEMA.COLUMNS
		WHERE TABLE_NAME = @TABLE_NAME 
 
		OPEN Cursor_NameCol  
 
		FETCH next FROM Cursor_NameCol INTO @colonne
 
		WHILE @@fetch_status = 0 
		BEGIN
			DECLARE @ValChp nvarchar(1000)
			SET @sql = 'SELECT @ValChp = [' + @colonne + '] FROM dbo.' + @TABLE_NAME + ' WHERE IdBDDDATA= ' + CONVERT(nvarchar(500),@IdBDDDATA)
			EXEC(@sql)
			SET @Ligne = @Ligne + '";"' + @ValChp
			FETCH next FROM Cursor_NameCol INTO @colonne
 
		END 
		CLOSE Cursor_NameCol 
		DEALLOCATE Cursor_NameCol 
 
		SET @Ligne = @Ligne + '"'
		PRINT @Ligne
		-- écrit cette ligne dans le fichier
 
	FETCH next FROM Cursor_Enreg INTO @IdBDDDATA
 
	END 
	CLOSE Cursor_Enreg
	DEALLOCATE Cursor_Enreg
ce script provoque 2 erreurs :

- Serveur*: Msg 137, Niveau 15, État 2, Ligne 1
La variable '@TABLE_NAME' doit être déclarée.
donc pour résoudre cette première erreur , je met le nom de la table directement dans la requete au lieu de le passer dans une variable mais cela est temporaire car je devrais a terme le faire sur plusieurs table

- Serveur*: Msg 137, Niveau 15, État 1, Ligne 1
La variable '@ValChp' doit être déclarée.
et là je ne vois pas comment corriger ça

merci d'avance pour votre aide , cela fait plusieurs jours que cherche des solutions.
C'est mon premier script en transact SQL, soyez indulgent