Insert avec condition

Résolu
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
Configuration: Windows XP
Internet Explorer 7.0

15 réponses

  1. voila:

    INSERT INTO MaTable(colonne1, colonne2,...)
    SELECT colonne1, colonne2,...
    FROM MaVue
    WHERE condition
    0
    1. Ah, et bien tant mieu, peux tu montrer la requete final stp?
      Ca pourras toujours etre utile

      Bon courage,
      0
      1. djkent1, j'ai changé de condition et ca marche. donc syntaxiquement c correcte
        merci beaucoup pour ton aide
        0
        1. 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
          1. cela ne marche pas non plus!!!
            0
            1. bonne chance et fait nous part de la solution des que tu l'atteins
              0
              1. 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
                1. 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
                  1. 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
                    1. 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
                      1. 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
                        1. 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
                          1. est ce que tu peux envoyer la partie du code exacte que tu utilise
                            0
                            1. 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
                              1. 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
                            2. 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