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 :
ce script provoque 2 erreurs :
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
- 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
Partager