Faire une boucle de Insert
mimin
-
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
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
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!!
@+
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!!
@+
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
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
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...
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...
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
je pense que je vai ajouter une condition pr ne pas retourné qu'une seule valeur et je testeré
je vous transmetrai le resultat
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question