| Inicio | Tu Cuenta | Manuales | Foros | Tutoriales | Los TOP | Empleos| Artículos | Comentarios |   

Manual Oracle
 1: Monitoreo de Bloqueos 
 2: Manejo de Clusters en Oracle 
 3: Analiszando las Consultas tipo Hash 
 4: Introducción a ORACLE Developer - Castellano 
 5: Creación de un Formulario en Developer Forms - Castellano 
 6: Administracion de Base de Datos Oracle 
 7: Tutorial de Oracle9i Reports 
 8: Manual de Developer Forms 
 9: Manual de Oracle9i Reports 
 10: External tables en Oracle 9i 


Mas de Oracle


Noticias Oracle


Error Ora-


Script Oracle Español
· Scripts para DBA
· SQL ANSI en Oracle 10g
· Pivoting INsert en Oracle 10g
· Sentencias de inserción en varias tablas - Oracle 10g
· Sentencia Insert condicionada - Oracle 10 g

[ Más en la Sección de Noticias ]



Sentencias de inserción en varias tablas - Oracle 10g
Enviado el Viernes, 11 agosto a las 12:05:40 por csr

Artículos útiles de Base de Datos

 

Sentencias de inserción en varias tablas

INSERT ALL

Oracle ha incluido una extensión del comando INSERT, de tal manera que usando solamente una sentencia sql, puedan ser insertados registros en diferentes tablas o destinos. Este tipo de insert multitabla es recomendable en tareas de transformación de datos via sql, principalmente cuando se llevan a cabo tareas de preparación de datos en datawarehouse y data mining; ya que ante los volúmenes de datos que generalmente se manejan para estas áreas, se reduce el número de sentencias a ejecutar.

Insert sin condiciones

Supongamos que se tiene la tabla ALUMNO con la siguiente descripción

NOMBRE   VARCHAR2(25)
APELLIDO   VARCHAR2(25)
LUGAR_NACIMIENTO
  NUMBER
FECHA_NACIMIENTO   DATE
MATERIAS_CURSADAS   NUMBER
MATERIAS_APROBADAS   NUMBER
MATERIAS_VALIDADAS   NUMBER
PROMEDIO_NOTAS   NUMBER

la cual tiene 6 registros únicamente

y se tienen 2 tablas históricas:

HIST_MATERIAS

IDALUMNO
  NUMBER
ANIO
  NUMBER
CURSADAS
  NUMBER
APROBADAS
  NUMBER
VALIDADAS   NUMBER

HIST_PROMEDIOS

IDALUMNO
  NUMBER
ANIO
  NUMBER
PROMEDIO_NOTAS   NUMBER(4,2)

Se desea cada fin de año consolidar los datos de los alumnos en el histórico, en la tabla HIST_MATERIAS se guardarán datos sobre las materias cursadas en cada año; y en la tabla HIST_PROMEDIOS se guardarán los datos sobre el promedio de calificaciones en cada año, para cada alumno.

Ahora, vamos ahora a incorporar la sentencia sql para esta situación.

INSERT ALL
INTO hist_materias VALUES ( id, 2005, materias_cursadas, materias_aprobadas,materias_validadas )
INTO hist_promedios VALUES (id, 2005, promedio_notas)
SELECT * FROM alumno;
12 rows created

Podemos ver que existen dos clausula INTO, que básicamente identifican las tablas odestios a los que se desea insertar registros. En la tabla hist_materias se insertarán los datos de materias cursadas, materias aprobadas y materias validadas para cada alumno; y en la tabla hist_promedios se insertará para cada alumno el promedio obtenido en el año (en este caso año 2005).

Ahora bien, la sentencia SELECT retorna 6 registros. Puede decirse que cada registro se convierte en dos inserciones, una para cada tabla. Es por eso que finalmente la sentencia SELECT ALL retorna la creación de 12 filas.

Por qué se le llama a este tipo de insert, insert sin condiciones? Muy sencillo, no hay restricciones para hacer la inserción en las tablas hist_materias e hist_promedios.

 

Tomado de www.zonaoracle.com

 
Enlaces Relacionados
· Más Acerca de Artículos útiles de Base de Datos
· Noticias de csr


Noticia más leída sobre Artículos útiles de Base de Datos:
Triggers en Oracle 8



Votos del Artículo
Puntuación Promedio: 3.3
votos: 10


Por favor tómate un segundo y vota por este artículo:

Malo
Regular
Bueno
Muy Bueno
Excelente




Opciones

Versión Imprimible  Versión Imprimible

Enviar a un Amigo  Enviar a un Amigo


Manual Oracle
Oracle Manual y tutorial, Pl/Sql, Discoverer, Forms, Sql y Plsql - Orape



Adaptado para nuke 6.0 por DragónNB