Insert avec condition

Résolu/Fermé
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009 - 25 févr. 2009 à 16:07
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009 - 25 févr. 2009 à 17:01
Bonjour à toutes et à tous,
j'aimerais faire une insertion dans une table en utilisant une condition.
j'ai essayé ce code:
INSERT
WHEN ([Condition]) THEN
INTO [TableName] ([ColumnName])
SELECT [ColumnName] FROM [TableName];

mais il ne marche pas!!! l'erreur resultante est "ORA-00925: Mot-clé INTO absent"

Est-ce que quelqu'un peut me suggerer une solution pour palier a ce probleme

Merci d'avance

15 réponses

zinmes Messages postés 21 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 28 février 2009 50
25 févr. 2009 à 16:10
Bonjour
le insert il es toujours suivit par into donc tu mets ta condition bien avant le insert into c'est a dire tu met ta condtion when(condition)then insert into...
bonne chance
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
25 févr. 2009 à 16:11
Bonjour,
Je pense que ce serait mieux comme ça, mais rien du sur

INSERT INTO [TableName] ([ColumnName])
WHEN ([Condition]) THEN
SELECT [ColumnName] FROM [TableName];

Cordialment,
0
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009
25 févr. 2009 à 16:16
Merci pour vos reponse,
j'ai essayé ce que vous avez suggerer mais aucune des solutions ne marche :s
en fait j'ai essayé de placer la clause de la conditon un peu partout mais cela n'a rien donné
0
zinmes Messages postés 21 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 28 février 2009 50
25 févr. 2009 à 16:18
est ce que tu peux envoyer la partie du code exacte que tu utilise
0
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009
25 févr. 2009 à 16:21
voila le code
insert when (ktp_gl_rapp.flag is null ) then
into ktp_gl_rapp(compteur, date_creation,
op_finance, montant_db,
montant_cr, desc_ligne,
num_compta, flag)
select ktp_gl_seq.nextval,default_effective_date,
doc_sequence_value, entered_dr, entered_cr,
desc_l, to_number(substr(desc_l,length(desc_l)-7,8)),
null
from ba_gl_ktp_v

NB: voici le lien ou j'ai trouvé la syntaxe
http://psoug.org/reference/insert.html
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
25 févr. 2009 à 16:21
Tu utilise quoi comme SGBD?
Je peux peu etre t'aider sur du oracle mais faudra patienter jusqu'à ce soir que je fasse des tests chez moi, enfin si personne ne te réépond d'ici la ( je te le souhaite pas :D )

Bon courage.
0
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009
25 févr. 2009 à 16:24
j'utilise une base de donnée oracle et j'utilise SQL navigator pour faire mes requetes

quant a la reponse, j'espere avoir une solution des que possible
et merci pour ton aide djkent1
0
zinmes Messages postés 21 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 28 février 2009 50
25 févr. 2009 à 16:29
voila la syntaxe de linsertion
insert into nomtable values('champs1','champs2'...)
donc il ne faut pas decoupé la requete sinon ca ne vas pas s'esxecuter
et si tu veux faire la condition tu la met ailleure avant ou apres la requete ca depond de ce que tu veux obtenir
aussi il faut geré les apostrophes selon les types de champs que tu as sur ta base
mais je crois que tu dois utiliser une funtion ou une procedure qui te permet de geré ta condition.
0
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009
25 févr. 2009 à 16:34
salut zinmes,

je pense aussi que la seule solution reste l'utilisation d'une procedure. mais le probleme est que l'insertion en question est executée dans un code java. donc les choses se corsent!!!!!

mais si y'a pas de solution a ca -chose que je ne crois, car tout probleme a une ou plusieurs solutions :) - je vais devoir changer mon algo
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
25 févr. 2009 à 16:37
J'ai lus quelques trucs, peu etre que sous la forme:

INSERT INTO [TableName] ([ColumnName])
VALUES (SELECT [ColumnName] FROM [TableName] )
WHEN ([Condition]);

Mais sa vient d'un post sur mysql alors ...
0
zinmes Messages postés 21 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 28 février 2009 50
25 févr. 2009 à 16:38
bonne chance et fait nous part de la solution des que tu l'atteins
0
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009
25 févr. 2009 à 16:39
cela ne marche pas non plus!!!
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
25 févr. 2009 à 16:45
Cette fois sa vient d'un article sur oracle, c'est peu etre mieu:

INSERT INTO TaTable
(NomColonne, NomColonne2)
SELECT AutreColonne AutreColonne2
FROM AutreTable
WHERE Condition;
0
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009
25 févr. 2009 à 16:53
djkent1, j'ai changé de condition et ca marche. donc syntaxiquement c correcte
merci beaucoup pour ton aide
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
25 févr. 2009 à 16:56
Ah, et bien tant mieu, peux tu montrer la requete final stp?
Ca pourras toujours etre utile

Bon courage,
0
javabdou Messages postés 17 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 20 juillet 2009
25 févr. 2009 à 17:01
voila:

INSERT INTO MaTable(colonne1, colonne2,...)
SELECT colonne1, colonne2,...
FROM MaVue
WHERE condition
0