2013-09-06 5 views
0

Je crée un script qui va insérer plusieurs données dans une table en une seule fois.comment insérer plusieurs lignes dans une table dans Oracle 10G?

create table emp 
(
Empno number(3) primary key, 
ename varchar2(20), 
job varchar2(20), 
MGR varchar2(20), 
sal varchar2(20) 
); 


insert all 
into emp values(100,'Dinesh','President',NULL,50000); 
into emp values(101,'Tanveer','MGR',100,25000); 
into emp values(102,'Tejas','Developer',101,12000); 
select * from dual 

cependant au-dessus de la commande d'insertion donne erreur

ORA-00911: invalid character

Au-dessus de code est correct, mais quelque chose est incorrect, plz me aider à découvrir.

+2

";" s après chacune des lignes "into emp". –

+0

Thanx Patrick :) –

+5

Trop localisée. La question consiste à corriger une erreur de syntaxe - cela aura une utilité très limitée pour quelqu'un d'autre. –

Répondre

1

Dans Oracle, une table unique INSERT peut spécifier une seule clause VALUES ou une sous-requête. Comme la tâche nécessite l'insertion de plusieurs lignes, la seule clause VALUES ne fonctionnera pas. Une sous-requête doit être spécifiée.

Une façon simple de générer la sous-requête souhaitée est de SELECT une séquence de littéraux de dual pour chaque rangée et de les déplier tout en un seul tableau en utilisant l'opérateur UNION ALL.

INSERT INTO emp (empno, ename, job, mgr, sal) 
    SELECT 100, 'Dinesh', 'President', NULL, 50000 FROM dual UNION ALL 
    SELECT 101, 'Tanveer', 'MGR',  100, 25000 FROM dual UNION ALL 
    SELECT 102, 'Tejas', 'Developer', 101, 12000 FROM dual; 
+0

veuillez expliquer pourquoi votre réponse fonctionne et comment vous y êtes arrivé afin que d'autres personnes ayant des problèmes similaires mais non identiques puissent suivre votre raisonnement et comprendre comment vous avez obtenu la réponse. – ArtB

+0

@ArtB: Ce n'est pas un raisonnement, c'est (surtout) de la syntaxe. Explication ajoutée. –

+0

@VadimK. Erreur: ORA-00928: Mot-clé SELECT manquant –

Questions connexes