Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment insérer plusieurs lignes dans la même table-Oracle 10g

Un INSERT VALUES instruction insère toujours exactement 1 ligne. Si vous souhaitez insérer plusieurs lignes avec des valeurs codées en dur, l'approche la plus courante serait simplement d'exécuter deux INSERT distincts déclarations.

insert into t1 values(131309,'HP','20-FEB-04',2000000,1235);
insert into t1 values(131310,'HT','20-APR-14',120020,1234);

Si vous le vouliez vraiment, vous pourriez sélectionner vos valeurs codées en dur à partir de dual puis faites un INSERT SELECT

insert into t1
  select 131309, 'HP', '20-FEB-04',2000000,1235 from dual
  union all
  select 131310,'HT','20-APR-14',120020,1234 from dual

Ou vous pouvez faire un INSERT ALL

insert all 
  into t1 values(131309,'HP','20-FEB-04',2000000,1235)
  into t1 values(131310,'HT','20-APR-14',120020,1234)
  select * from dual

Personnellement, je n'utiliserais que deux déclarations.

Bien que cela ne soit pas lié à votre question, quelques commentaires

  • Toujours, répertoriez toujours les colonnes dans votre insert déclaration. Vous rendrez votre SQL beaucoup plus robuste de sorte que si vous ajoutez de nouvelles colonnes à l'avenir qui autorisent NULL valeurs vos instructions fonctionneront toujours. Et vous éviterez de nombreux bugs lorsque la liste des colonnes est là plutôt que d'espérer que quelqu'un se souvienne de l'ordre des colonnes dans le tableau.
  • Si vous insérez une valeur dans une date colonne, utilisez une date et non un littéral de chaîne qui représente une date. S'appuyer sur la conversion implicite des types de données est une source de nombreux bogues. Utilisez un to_date explicite ou utilisez des littéraux de date ANSI. Et utilisez des années à 4 chiffres.