Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

insert multiple en oracle

Estas en el tema de insert multiple en oracle en el foro de Oracle en Foros del Web. hola a todos. tengo la necesidad de insertar un numero considerado de datos para una bd oracle y necesito insertar de una sola vez para ...
  #1 (permalink)  
Antiguo 27/04/2007, 21:03
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 17 años
Puntos: 0
insert multiple en oracle

hola a todos.
tengo la necesidad de insertar un numero considerado de datos para una bd oracle y necesito insertar de una sola vez para ganar en velocidad; hasta ahora yo solo conozco para oracle solo dos vias de hacer esto:
la primera..
insert into A (a1, a2) values (1,2)
insert into A (a1, a2) values (3,4)
insert into A (a1, a2) values (5,6) y asi sucesivamente

la segunda..
insert into A (a1, a2)
select 1,2 from dual
union all
select 3,4 from dual
union all
select 5,6 from dual

existe alguna otra forma para este tipo de insercion??,

gracias de antemano,
saludos a todos.
  #2 (permalink)  
Antiguo 30/04/2007, 13:05
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Re: insert multiple en oracle

para la version 10g (creo qu es desde la 9) existe algo como lo que quieres, hasta ahorita no lo he usado solo lei el documento, leete esto

http://www.oracle-base.com/articles/...Features9i.php
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 02/05/2007, 12:43
 
Fecha de Ingreso: mayo-2007
Mensajes: 2
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: insert multiple en oracle

Saludos

pudieras utilizar el create table nobretable as (select * from tabla) si es que no tienes creado la tabla

o bien pudieras realizar un import de los resgistros desde un archivo de texto
  #4 (permalink)  
Antiguo 04/05/2007, 11:46
Avatar de cesar_winston  
Fecha de Ingreso: mayo-2007
Ubicación: df
Mensajes: 8
Antigüedad: 16 años, 11 meses
Puntos: 0
Sonrisa Re: insert multiple en oracle

Lo que puedes hacer es crear un stored procedure y relizar un secuancia para cada inserción que vaya incrementando de 2 en 2.

CREATE SEQUENCE CONEXION.SECPAR
START WITH 1
INCREMENT BY 2
MINVALUE 0
NOCACHE
NOCYCLE
NOORDER

CREATE SEQUENCE CONEXION.SECINPAR
START WITH 2
INCREMENT BY 2
MINVALUE 0
NOCACHE
NOCYCLE
NOORDER

y es stored seria asi

CREATE OR REPLACE PROCEDURE SP_INCREMENTO IS

BEGIN

OPEN c1;
LOOP
FETCH c1 INTO rec;
EXIT WHEN c1=100;
insert into A (a1, a2) values (SECPAR,SECINPAR);

END LOOP;
CLOSE c1;

COMMIT;

EXCEPTION
WHEN OTHERS THEN
ERROR_LOG(SQLCODE,'SP_INCREMENTO',SQLERRM,0);
RAISE;
END SP_INCREMENTO;
/

espero te pueda ayudar esto, la verdad no estoy en una maquina que tenga oracle para hacer una prueba pero si no mal recuerdo la idea es esta.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:38.