Faire une boucle de Insert

mimin -  
 mimin -
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

6 réponses

chuka Messages postés 980 Statut Membre 378
 
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!!
@+
0
mimin
 
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
0
chuka Messages postés 980 Statut Membre 378
 
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...
0
mimin
 
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
0

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

Posez votre question
chuka Messages postés 980 Statut Membre 378
 
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!!
@+
0
mimin
 
je vous remerci chère chuKa pour votr gentilless et votr aide

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

a+
0