J'ai un petit soucis avec une proc=E9dure stock=E9e ...
J'ai =E9crit une proc=E9dure stock=E9e qui accepte un argument=20
de type 'varchar'.
Cet argument est destin=E9 =E0 r=E9cup=E9rer le chemin d'acc=E8s et=20
le nom d'un fichier texte.
Au sein de ma proc=E9dure, je d=E9sire ex=E9cuter un 'BULK=20
INSERT' afin d'ins=E9rer le contenu du fichier texte pass=E9=20
en argument dans une table :
BULK INSERT MyTable FROM @MyFile WITH ...
Je ne parviens pas =E0 compiler ma proc=E9dure. Visiblement,=20
l'utilisation de l'argument dans cette instruction n'est=20
pas permise.
Lorsque j'encadre l'argument de crochets (BULK INSERT=20
MyTable FROM [@MyFile] WITH ...) la proc=E9dure est bien=20
compil=E9e mais je re=E7ois un message d'erreur =E0 l'ex=E9cution=20
qui me dit que le fichier 'MyFile' n'existe pas !
J'ai essay=E9 d'utiliser la fonction 'CAST' sans r=E9sultat.
J'ai essay=E9 d'utiliser une variable 'locale' =E0 la place de=20
l'argument (en assignant la valeur de l'argument =E0 la=20
variable locale) ... sans plus de r=E9sultat.
Bref ... je s=E8che !
Toute id=E9e est la bienvenue.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
Exact, les variables ne se placent pas n'importe ou !!!! 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:
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
-- 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: ******************
Exact, les variables ne se placent pas n'importe ou !!!!
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:
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
--
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:brouardf@club-internet.fr ******************
Exact, les variables ne se placent pas n'importe ou !!!! 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:
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
-- 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: ******************
gfourrat
Tu peux essayer d'exécuter une instruction TSQL dynamique.
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 --------------------
Content-Class: urn:content-classes:message From: "Olivier" Sender: "Olivier" Subject: Utilisation d'une variable dans une clause "FROM" Date: Thu, 16 Oct 2003 02:50:59 -0700 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
Tu peux essayer d'exécuter une instruction TSQL dynamique.
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
--------------------
Content-Class: urn:content-classes:message
From: "Olivier" <olivier@abrasis.be>
Sender: "Olivier" <olivier@abrasis.be>
Subject: Utilisation d'une variable dans une clause "FROM"
Date: Thu, 16 Oct 2003 02:50:59 -0700
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
Tu peux essayer d'exécuter une instruction TSQL dynamique.
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 --------------------
Content-Class: urn:content-classes:message From: "Olivier" Sender: "Olivier" Subject: Utilisation d'une variable dans une clause "FROM" Date: Thu, 16 Oct 2003 02:50:59 -0700 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
Merci pour l'information. J'ai entretemps été victime de SPAM ... ce qui explique ma lenteur.
-----Message d'origine----- Tu peux essayer d'exécuter une instruction TSQL dynamique.
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 --------------------
Content-Class: urn:content-classes:message From: "Olivier" Sender: "Olivier" Subject: Utilisation d'une variable dans une
clause "FROM"
Date: Thu, 16 Oct 2003 02:50:59 -0700 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
.
Merci pour l'information.
J'ai entretemps été victime de SPAM ... ce qui explique ma
lenteur.
-----Message d'origine-----
Tu peux essayer d'exécuter une instruction TSQL dynamique.
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
--------------------
Content-Class: urn:content-classes:message
From: "Olivier" <olivier@abrasis.be>
Sender: "Olivier" <olivier@abrasis.be>
Subject: Utilisation d'une variable dans une
clause "FROM"
Date: Thu, 16 Oct 2003 02:50:59 -0700
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
Merci pour l'information. J'ai entretemps été victime de SPAM ... ce qui explique ma lenteur.
-----Message d'origine----- Tu peux essayer d'exécuter une instruction TSQL dynamique.
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 --------------------
Content-Class: urn:content-classes:message From: "Olivier" Sender: "Olivier" Subject: Utilisation d'une variable dans une
clause "FROM"
Date: Thu, 16 Oct 2003 02:50:59 -0700 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