Crear una tabla de objetos en Oracle

Vamos a ver en éste post cómo crear una tabla de objetos en Oracle. Para ello, vamos a crear primero un objeto y sobre ése objeto construiremos una tabla que contendrá en unos de sus campos al citado objeto.
Crear una tabla de objetos en Oracle

Tomaremos como ejemplo el objeto "direccionOBJ" que es una dirección postal:
CREATE OR REPLACE TYPE direccionOBJ as OBJECT
(
   calle VARCHAR2(20),
   ciudad VARCHAR2(20),
   codProvincia CHAR(2),
   cPostal CHAR(5)
);
Ahora creamos una tabla de empleado, que contiene al objeto direccion (de tipo direccionOBJ):
CREATE TABLE empleado 
(
  numEmpleado   NUMBER(3),
  nombre VARCHAR2(20),
  direccion direccionOBJ
);
Vamos a crear ahora una fila para nuestra tabla de empleados:
INSERT INTO empleado VALUES 
(139, 'Antonio', direccionOBJ('Calle Sierpes','Sevilla','41','41001'));

Crear una tabla a partir de un objeto Oracle 

A continuación vamos a crear una tabla oracle con los objetos direccionOBJ y vamos a copiar todas las direcciones de nuestra tabla de empleados a ésta tabla:
CREATE TABLE tabla_direcciones OF direccionOBJ;
Insertamos las direcciones:
INSERT INTO tabla_direcciones 
    SELECT e.direccion
    FROM empleados e;
Así hemos transformado el objeto direccionesOBJ en una tabla que podemos consultar. Vamos a hacer un "select" de nuestra tabla:
SELECT ciudad FROM tabla_direcciones
Ya ésta, así de simple... (o de difícil) ;)
Share:
spacer

2 comentarios:

  1. Hola, Buen post. Tengo una consulta como haria en el caso de que quisiera insertar datos a una tabla a traves de un objeto. Es decir, tengo un objeto y una tabla construida con ese objeto asi como en el ejemplo. Lo que quiero es insertar los valores del objeto a una tabla normal que tiene sus mismos campos.

    ResponderEliminar
  2. Hola, como puedo crear la tabla con un objeto que tenga campos tipo table u otros objetos

    ResponderEliminar