sql >> Base de Datos >  >> RDS >> Oracle

Cómo insertar varias filas en la misma tabla-Oracle 10g

Un INSERT VALUES declaración siempre inserta exactamente 1 fila. Si desea insertar varias filas con valores codificados, el enfoque más común sería simplemente ejecutar dos INSERT separados declaraciones.

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

Si realmente quisiera, podría seleccionar sus valores codificados de dual y luego haz 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

O podrías hacer 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

Personalmente, solo usaría dos declaraciones.

Aunque esto no está relacionado con su pregunta, un par de comentarios

  • Siempre, enumere siempre las columnas en su insert declaración. Hará que su SQL sea mucho más robusto, de modo que si agrega nuevas columnas en el futuro que permitan NULL valores, sus declaraciones seguirán funcionando. Y evitará muchos errores cuando la lista de columnas esté allí en lugar de esperar que alguien recuerde el orden de las columnas en la tabla.
  • Si está insertando un valor en una date columna, use una fecha, no un literal de cadena que represente una fecha. Confiar en la conversión implícita de tipos de datos es una fuente de muchos errores. Use un to_date explícito o use literales de fecha ANSI. Y use años de 4 dígitos.