Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 16h46   #1
Nouveau Membre du Club
 
Inscription : octobre 2010
Messages : 28
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : octobre 2010
Messages : 28
Points : 36
Points : 36
Par défaut [TSQL]INSERT --> SELECT + @MaVariable

Bonjour, je débute avec le TSQL et j'ai un problème sur un INSERT.

Je dois insérer dans ma table, le résultat d'un requête + une variable.

J'ai un variable @requete qui contient ma requête donc si je fais :
Code :
INSERT INTO tb_atp_articles_caracterises (art_cod,art_lib,art_stat_1,ope_lib_1) EXEC(@requete)
Le résultat de ma requête est insérer comme il faut dans ma table.

Seulement je viens de rajouter un champ dans ma table et il n'est pas compris dans ma requête. Il se trouve dans un variable @mcr_categorie.

Donc je voudrais insérer le résultat de ma requête dans les 4 premier champs et dans le dernier champ de la table je voudrais ma variable.

Je ne sais pas si c'est possible mais ça m'avancerait bien.

Merci!
srede est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 17h09   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
en méthode sale, je dirai :

Code sql :
1
2
 
INSERT INTO tb_atp_articles_caracterises (art_cod,art_lib,art_stat_1,ope_lib_1) EXEC(REPLACE(@requete, 'FROM', '''' + @mcr_categorie + '''' + ' FROM'))

a condition que @mcr_categorie ne contienne pas de simple cote, sinon il faudra ajouter un REPLACE pour les doubler...

Je n'ai pas d'idée pour faire quelque chose de propre

expliquez nous un peu le contexte, on pourra peut être trouver une meilleure solution...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2010, 09h59   #3
Nouveau Membre du Club
 
Inscription : octobre 2010
Messages : 28
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : octobre 2010
Messages : 28
Points : 36
Points : 36
Merci de ta réponse mais la méthode "sale" ne fonctionne pas. dommage...

Le contexte :
J'avais un document Excel qui devenait lourd à traiter. J'ai voulu donc "l'importer" dans Access, en légèrement plus élaboré avec des relations dans des tables déjà présente. Seulement mon champ @mcr_categorie n'a aucune relation avec aucunes de mes tables.

J'ai un curseur qui parcoure ma table qui contient le champ mcr_curseur et pour chaque enregistrement j'ai une requête dynamique qui se créée. Et je n'arrive pas à inclure mon champ mcr_categorie dans ma requête dynamique.

Voilà quelques petites précisions, si c'est toujours insuffisant, vous pouvez encore me demandez d'autres précisions.

Bonne journée
srede est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h11   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par srede Voir le message
Merci de ta réponse mais la méthode "sale" ne fonctionne pas. dommage...
C'est a dire ? ne fait pas ce que tu veux ou provoque une erreur (et dans ce cas, poste le message d'erreur)

Citation:
Envoyé par srede Voir le message
Le contexte :
J'avais un document Excel qui devenait lourd à traiter. J'ai voulu donc "l'importer" dans Access,
Tu es dans le forum MS-SQL, j'avais donc supposé que tu etais sous.. MS-SQL
Tu es sous Access ?


Citation:
Envoyé par srede Voir le message
J'ai un curseur qui parcoure ma table qui contient le champ mcr_curseur et pour chaque enregistrement j'ai une requête dynamique qui se créée. Et je n'arrive pas à inclure mon champ mcr_categorie dans ma requête dynamique.
oui, tu pourrai nous en dire plus la dessus.
pourquoi ne rajoute-tu pas le champs directement dans ta requete, qu'est-ce qui t'en empêche

Sinon tu peux aussi prévoir une requete UPDATE après ton INSERT pour mettre a jour le champ avec ta valeur

Enfin j'ai l'impression quand meme que tu es parti sur une fausse piste dès le début (en général, un EXEC dans une requete, ca sent le bricolage...).D'ou proviennent tes données ? si tu as tout en base (genre pas de paramètre en entrée de ta procédure stockée), tu dois pouvoir faire tout ca en une seule requete (et te passer des EXEC et des curseurs), mais pour t'aider il faudrait qu'on connaisse la structure des tes tables concernées, et savoir ce que tu veux faire...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2010, 10h24   #5
Nouveau Membre du Club
 
Inscription : octobre 2010
Messages : 28
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : octobre 2010
Messages : 28
Points : 36
Points : 36
Citation:
Envoyé par aieeeuuuuu Voir le message
C'est a dire ? ne fait pas ce que tu veux ou provoque une erreur (et dans ce cas, poste le message d'erreur)
Voilà le message d'erreur
Code :
1
2
Msg 102, Niveau 15, État 1, Procédure sp_atp_caracterisationArticles, Ligne 48
Syntaxe incorrecte vers 'REPLACE'.
Citation:
Envoyé par aieeeuuuuu Voir le message
Tu es dans le forum MS-SQL, j'avais donc supposé que tu etais sous.. MS-SQL
Tu es sous Access ?
J'ai juste les formulaire sous access parceque je dois rentrer certaines données à la main. Mais ma procédure est sous MS-SQL

Citation:
Envoyé par aieeeuuuuu Voir le message
oui, tu pourrai nous en dire plus la dessus.
pourquoi ne rajoute-tu pas le champs directement dans ta requete, qu'est-ce qui t'en empêche
Si je rajoute le champ mcr_categorie le résultat de ma requête est faux parce que je n'arrive pas à trouver des liens entre mon champ mcr_catégorie et ma base.

Citation:
Envoyé par aieeeuuuuu Voir le message
Sinon tu peux aussi prévoir une requete UPDATE après ton INSERT pour mettre a jour le champ avec ta valeur
J'y ai pensé aussi, je le ferai si je ne trouve pas d'autres solution

Citation:
Envoyé par aieeeuuuuu Voir le message
Enfin j'ai l'impression quand meme que tu es parti sur une fausse piste dès le début
Je pense aussi que je ne suis pas sur la bonne piste... Je vais essayer de chercher encore...

Merci de ton aide
srede est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h31   #6
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
sinon, poste nous la structure de tes tables, et aussi le code qui te permet de générer dynamiquement ta requete, on y verra peut être un peu plus clair...
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2010, 10h39   #7
Nouveau Membre du Club
 
Inscription : octobre 2010
Messages : 28
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : octobre 2010
Messages : 28
Points : 36
Points : 36
Ahhh voilà!

J'ai modifié ma requête dynamique et maintenant ça marche. Lors de ma précédentes tentatives de modifications j'avais oublié une condition alors forcément ça allait un peu moins bien.

Merci pour de ton aide!
srede est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h24.


 
 
 
 
Partenaires

Hébergement Web