Diferència entre revisions de la pàgina «M2 - Bases de dades / Apunts UF4 : BDOR3»

De wikiserver
Dreceres ràpides: navegació, cerca
(Varrays)
(Varrays)
Línia 43: Línia 43:
 
(100, ‘Elka’, e_mails_array_typ(‘algo@algo.com’, ‘otro@otro.org’));
 
(100, ‘Elka’, e_mails_array_typ(‘algo@algo.com’, ‘otro@otro.org’));
 
</source>
 
</source>
 +
 +
* Se puede crear objetos de más niveles de anidación
 +
<source lang="sql">
 +
CREATE TYPE phone_typ AS OBJECT (
 +
  country_code VARCHAR2(2),
 +
  area_code VARCHAR2(3),
 +
  ph_number VARCHAR2(7));
 +
 +
CREATE TYPE phone_varray_typ AS VARRAY(5) OF phone_typ;
 +
 +
CREATE TABLE dept_phone_list (
 +
  dept_no NUMBER(5),
 +
  phone_list phone_varray_typ);
 +
</source>
 +
 +
* Para insertar datos se ocupa invocar constructores correspondientes:
 +
<source lang="sql">
 +
INSERT INTO dept_phone_list VALUES (100, phone_varray_typ( phone_typ ('01', '650',
 +
'5061111'), phone_typ ('01', '650', '5062222'), phone_typ ('01', '650', '5062525')));
 +
</source>
 +
 +
* El almacenamiento de varray depende solo del número de elementos presentes en la colección.
 +
 +
* Se guardan en columna de la misma tabla o como LOB, si su tamaño excede 4000 bytes.
 +
 +
* Varrays tienen mejor desempeño cuando se accede toda la colección porque se guardan en forma comprimida y no requieren ninguna operación join.

Revisió del 16:35, 17 maig 2018

Colecciones

  • Oracle incluye dos tipos de colecciones:
- Varray
- Nested table
  • Las colecciones pueden ser usadas en cualquier lugar donde se necesita definir tipo (atributo, variable, parámetro).
  • Se puede definir el tipo de objeto representando la colección y después usarlo en la definición de la tabla.

Varrays

  • Cada elemento tiene una posición que corresponde a la posición del elemento dentro de la colección.
  • El tamaño del arreglo indica el número máximo de elementos, pero Oracle almacena tamaño variable (de acuerdo a la cantidad real de elementos que existen).
- Por esto los arreglos se llaman varrays.
  • Cada elemento es del mismo tipo.
  • La creación de una colección tipo varray requiere la cláusula CREATE TYPE ... AS ARRAY OF...
CREATE TYPE e_mails_array_typ AS ARRAY OF VARCHAR2(20);
  • La creación de tipo (incluyendo varray) no asigna espacio.
  • Este tipo se define para usarlo como:
- Columna de tabla relacional.
- Atributo de UDT.
- Variable o parámetro de la función o procedimiento.
CREATE TABLE employee_tab (
   id NUMBER(5),
   name VARCHAR2(35),
   e_mails e_mails_array_typ);
- Para insertar datos se ocupa invocar constructor:
INSERT INTO employee_tab VALUES
(100, ‘Elka’, e_mails_array_typ(‘algo@algo.com’, ‘otro@otro.org’));
  • Se puede crear objetos de más niveles de anidación
CREATE TYPE phone_typ AS OBJECT (
   country_code VARCHAR2(2),
   area_code VARCHAR2(3),
   ph_number VARCHAR2(7));

CREATE TYPE phone_varray_typ AS VARRAY(5) OF phone_typ;

CREATE TABLE dept_phone_list (
   dept_no NUMBER(5),
   phone_list phone_varray_typ);
  • Para insertar datos se ocupa invocar constructores correspondientes:
INSERT INTO dept_phone_list VALUES (100, phone_varray_typ( phone_typ ('01', '650',
'5061111'), phone_typ ('01', '650', '5062222'), phone_typ ('01', '650', '5062525')));
  • El almacenamiento de varray depende solo del número de elementos presentes en la colección.
  • Se guardan en columna de la misma tabla o como LOB, si su tamaño excede 4000 bytes.
  • Varrays tienen mejor desempeño cuando se accede toda la colección porque se guardan en forma comprimida y no requieren ninguna operación join.