Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como inserir várias linhas na mesma tabela - Oracle 10g


Um INSERT VALUES A instrução sempre insere exatamente 1 linha. Se você deseja inserir várias linhas com valores codificados, a abordagem mais comum seria simplesmente executar duas INSERT separadas declarações.
insert into t1 values(131309,'HP','20-FEB-04',2000000,1235);
insert into t1 values(131310,'HT','20-APR-14',120020,1234);

Se você realmente quiser, poderá selecionar seus valores codificados em dual e então faça um 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 você pode fazer um 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

Pessoalmente, eu usaria apenas duas declarações.

Embora isso não esteja relacionado à sua pergunta, alguns comentários
  • Sempre, sempre liste as colunas em seu insert declaração. Você tornará seu SQL muito mais robusto para que, se adicionar novas colunas no futuro que permitam NULL valores suas declarações ainda funcionarão. E você evitará muitos bugs quando a lista de colunas estiver bem ali, em vez de esperar que alguém se lembre da ordem das colunas na tabela.
  • Se você estiver inserindo um valor em uma date coluna, use uma data e não um literal de string que represente uma data. Confiar na conversão implícita de tipo de dados é uma fonte de muitos bugs. Use um to_date explícito ou use literais de data ANSI. E use anos de 4 dígitos.