[SQL200] Export d'une table dans un fichier avec Transact-SQL
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:
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