Faire une boucle de Insert

Bonjour,

je suis débutant en oracle et pl/sql, je vous décrierai mon pb et j'espère que vous m'aiderez.

voila j'ai une table (applé TABLE1) qui contient un grand nombr de lignes, moi je désire copier quelques valeur dans une autre table avec l'instruction suivant:

insert into scott.TABLE2 (NOM_CAND, PRENOM_CAND,EMAIL_CAND, TELPORTABLE_CAND, LIBELLE_DIPLOME, OID, TIMESTAMP, SEXE_CAND, NATIONALITE_CAND, PAYS_CAND, NIVEAU_DIPLOME) values ((select NOM from scott.TABLE1), (select PRENOM from scott.TABLE1), (select EMAIL from scott.TABLE1), (select TEL_PORTABLE from scott.TABLE1), (select LIBELLE_DIPLOME from scott.TABLE1), '5555' ,'6554645', (select OID from src.PARAMETRES where CODE_TABLE = 'sexe' and CODE_VALEUR = (select SEXE from scott.TABLE1)),'nationalite' , (select OID from src.PARAMETRES where CODE_TABLE = 'pays' and CODE_VALEUR = (select PAYS from scott.TABLE1)), (select OID from src.PARAMETRES where CODE_TABLE = 'niveauDiplome' and CODE_VALEUR = (select NIVEAU_DIPLOME from scott.TABLE1)));

voila je veux executer cette instruction n fois (avec n le nombre de ligne de la table TABLE1)

je sais pas peut etre ça pau etre résolu par une procédure stoké ou trigger mais personnellement j'ai pas abouti a le faire et je connais pas commen programmer uen procédure ou l'executer

Merci pour votre aide
Configuration: ORACLE 10g
Windows XP
Internet Explorer 7.0

6 réponses

  1. Salut,
    declare
    var integer;
    begin
    select count(*) into var from table1;
    while var!=0
    loop
    ton_insert
    var:=var-1;
    end loop;
    end;

    J'espere ca pourra t'aider!!
    @+
    1. En fait j'ai executé votr programme ds sql developper mais ça ma générer l'erreur suivant:

      Error starting at line 1 in command:
      declare
      var integer;
      begin
      select count(*) into var from src.SRC_EXCEL;
      while var!=0
      loop
      insert into src.CANDIDAT (NOM_CAND, PRENOM_CAND,EMAIL_CAND, TELPORTABLE_CAND, LIBELLE_DIPLOME, OID, TIMESTAMP, SEXE_CAND, NATIONALITE_CAND, PAYS_CAND, NIVEAU_DIPLOME) values ((select NOM from src.SRC_EXCEL), (select PRENOM from src.SRC_EXCEL), (select EMAIL from src.SRC_EXCEL), (select TEL_PORTABLE from src.SRC_EXCEL), (select LIBELLE_DIPLOME from src.SRC_EXCEL), '5555' ,'6554645', (select OID from src.PARAMETRES where CODE_TABLE = 'sexe' and CODE_VALEUR = (select SEXE from src.SRC_EXCEL)),'nationalite' , (select OID from src.PARAMETRES where CODE_TABLE = 'pays' and CODE_VALEUR = (select PAYS from src.SRC_EXCEL)), (select OID from src.PARAMETRES where CODE_TABLE = 'niveauDiplome' and CODE_VALEUR = (select NIVEAU_DIPLOME from src.SRC_EXCEL)));
      var:=var-1;
      end loop;
      end;
      Error report:
      ORA-01427: sous-interrogation ramenant un enregistrement de plus d'une ligne
      ORA-06512: à ligne 7
      01427. 00000 - "single-row subquery returns more than one row"
      *Cause:
      *Action:

      paut etr que j'ai looper quelque chose car j sui vremen ignoran en ce qui concern lé procédur

      je vous remerci vivemen
      1. Salut,
        As-tu qu'une seule ligne qui est retourné pour ces requetes?
        select NOM from src.SRC_EXCEL
        (select PRENOM from src.SRC_EXCEL)
        dans ton values...
        1. en fait non, ça peut retourné plus qu'une seule valeur,

          je pense que je vai ajouter une condition pr ne pas retourné qu'une seule valeur et je testeré

          je vous transmetrai le resultat
          1. Sinon tu pourrais faire un curseur sur la table src.SRC_EXCEL... et faire une boucle imbriquée...
            j'ai pas testé mais cela devrais être réalisable!!
            @+
            1. je vous remerci chère chuKa pour votr gentilless et votr aide

              oui votr method m'a apporté un gd aide.

              a+