Utilisation d'une variable dans une clause "FROM"
Le
Olivier

Bonjour,
J'ai un petit soucis avec une procédure stockée
J'ai écrit une procédure stockée qui accepte un argument
de type 'varchar'.
Cet argument est destiné à récupérer le chemin d'accès et
le nom d'un fichier texte.
Au sein de ma procédure, je désire exécuter un 'BULK
INSERT' afin d'insérer le contenu du fichier texte passé
en argument dans une table :
BULK INSERT MyTable FROM @MyFile WITH
Je ne parviens pas à compiler ma procédure. Visiblement,
l'utilisation de l'argument dans cette instruction n'est
pas permise.
Lorsque j'encadre l'argument de crochets (BULK INSERT
MyTable FROM [@MyFile] WITH ) la procédure est bien
compilée mais je reçois un message d'erreur à l'exécution
qui me dit que le fichier 'MyFile' n'existe pas !
J'ai essayé d'utiliser la fonction 'CAST' sans résultat.
J'ai essayé d'utiliser une variable 'locale' à la place de
l'argument (en assignant la valeur de l'argument à la
variable locale) sans plus de résultat.
Bref je sèche !
Toute idée est la bienvenue.
Merci d'avance,
Olivier
J'ai un petit soucis avec une procédure stockée
J'ai écrit une procédure stockée qui accepte un argument
de type 'varchar'.
Cet argument est destiné à récupérer le chemin d'accès et
le nom d'un fichier texte.
Au sein de ma procédure, je désire exécuter un 'BULK
INSERT' afin d'insérer le contenu du fichier texte passé
en argument dans une table :
BULK INSERT MyTable FROM @MyFile WITH
Je ne parviens pas à compiler ma procédure. Visiblement,
l'utilisation de l'argument dans cette instruction n'est
pas permise.
Lorsque j'encadre l'argument de crochets (BULK INSERT
MyTable FROM [@MyFile] WITH ) la procédure est bien
compilée mais je reçois un message d'erreur à l'exécution
qui me dit que le fichier 'MyFile' n'existe pas !
J'ai essayé d'utiliser la fonction 'CAST' sans résultat.
J'ai essayé d'utiliser une variable 'locale' à la place de
l'argument (en assignant la valeur de l'argument à la
variable locale) sans plus de résultat.
Bref je sèche !
Toute idée est la bienvenue.
Merci d'avance,
Olivier
En général elle sont réservées à la partie droite d'un prédicat de
comparaison (généralement le WHERE).
Si tu veut paramétrer un ordre plus complexe il faut faire du SQL dynamqiue.
En effet, un ordre SQL comme BULK INSERT est une chaine de caractères et
peut donc être manipulé comme tel...
Exemple :
DECLARE @SQLorder VARCHAR(8000)
SET @SQLorder = 'BULK INSERT MyTable FROM ' + @MyFile
+ ' WITH ... '
EXEC (@SQLorder)
A +
Olivier a écrit:
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Exemple :
create procedure dynamix
@param varchar(30)
as
declare @chaine varchar(70)
set @chaine = 'print '''+@param + ''' '
exec (@chaine)
go
exec dynamix toto
Guillaume Fourrat
Microsoft France
--------------------
J'ai entretemps été victime de SPAM ... ce qui explique ma
lenteur.
clause "FROM"
et
Visiblement,
l'exécution
de