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. 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
    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,
      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é
    2. 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
      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.
        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
          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.
            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
              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 ...
                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;
                  1. djkent1, j'ai changé de condition et ca marche. donc syntaxiquement c correcte
                    merci beaucoup pour ton aide
                    1. Ah, et bien tant mieu, peux tu montrer la requete final stp?
                      Ca pourras toujours etre utile

                      Bon courage,
                      1. voila:

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