SQL> -- Creacion de tipos:
SQL>
SQL> DROP TYPE cuidador_t FORCE;
Tipo borrado.
SQL> DROP TYPE conj_animales_t FORCE;
Tipo borrado.
SQL> DROP TYPE animal_t FORCE;
Tipo borrado.
SQL> DROP TYPE especie_t FORCE;
Tipo borrado.
SQL>
SQL>
SQL> CREATE TYPE especie_t AS OBJECT(
2 especie_id VARCHAR2(15),
3 nombreComun VARCHAR2(50),
4 clase VARCHAR2(25),
5 orden VARCHAR2(25),
6 descEspecie SYS.XMLType
7 )
8 /
Tipo creado.
SQL>
SQL> CREATE TYPE animal_t AS OBJECT(
2 animal_id VARCHAR2(15),
3 nombre VARCHAR2(50),
4 sexo VARCHAR2(15),
5 cod_especie REF especie_t,
6 descripcion SYS.XMLType
7 )
8 /
Tipo creado.
SQL>
SQL> CREATE TYPE conj_animales_t AS TABLE OF REF animal_t
2 /
Tipo creado.
SQL>
SQL> CREATE TYPE cuidador_t AS OBJECT(
2 dni VARCHAR2(15),
3 nombre VARCHAR2(50),
4 telefono VARCHAR2(12),
5 animales conj_animales_t
6 )
7 /
Tipo creado.
SQL> -- Creacion de tablas:
SQL>
SQL> DELETE FROM especies_tab;
DELETE FROM especies_tab
*
ERROR en línea 1:
ORA-04063: table "IX52AL063346.ESPECIES_TAB" tiene errores
SQL> DROP TABLE especies_tab;
Tabla borrada.
SQL>
SQL> CREATE TABLE especies_tab OF especie_t
2 (PRIMARY KEY(especie_id));
Tabla creada.
SQL>
SQL>
SQL> DELETE FROM animales_tab;
DELETE FROM animales_tab
*
ERROR en línea 1:
ORA-04063: table "IX52AL063346.ANIMALES_TAB" tiene errores
SQL> DROP TABLE animales_tab;
Tabla borrada.
SQL>
SQL> CREATE TABLE animales_tab OF animal_t
2 (PRIMARY KEY(animal_id),
3 SCOPE FOR (cod_especie) IS especies_tab);
Tabla creada.
SQL>
SQL>
SQL> DELETE FROM cuidadores_tab;
DELETE FROM cuidadores_tab
*
ERROR en línea 1:
ORA-04063: table "IX52AL063346.CUIDADORES_TAB" tiene errores
SQL> DROP TABLE cuidadores_tab;
Tabla borrada.
SQL>
SQL> CREATE TABLE cuidadores_tab OF cuidador_t
2 (PRIMARY KEY(dni))
3 NESTED TABLE animales STORE AS conj_animales_tab
4 ();
Tabla creada.
SQL>
SQL> ALTER TABLE conj_animales_tab ADD
2 (SCOPE FOR (COLUMN_VALUE) IS animales_tab);
Tabla modificada.
SQL>
SQL> -- Insercion de datos:
SQL>
SQL> -- Tabla ESPECIES_TAB
SQL>
SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie)
2 VALUES ('esp00', 'Leopardo', 'Mamíferos', 'Carnívoros', sys.XMLType.createXML('
3
4 Leopardo
5 Animal
6 Cordados
7 Vertebrados
8 Mamiferos
9 Carnivoros
10 Felinos
11 Panthera pardus
12 La hembra pare una camada que oscila entre 1 y 6 cachorros, aunque lo normal son 2 o 3
13 Terrestre
14 Consumidor terciario
15
16
17 Actualmente es una especie amenazada y en serio peligro, ya que estos animales mueren debido a que son cazados para conseguir sus pieles o utilizarlos como trofeos en senyal de poder. Se encuentra en el apendice I de la CITES
18
19
20 Es una especie que esta sujeta a proteccion especial por un tiempo determinado. Solo cuando esta en periodo reproductivo, no es permitida su caza
21
22
23 ')
24 );
1 fila creada.
SQL>
SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie)
2 VALUES ('esp01', 'Gallina', 'Aves', 'Galliformes', sys.XMLType.createXML('
3
4 Gallina
5 Animal
6 Cordados
7 Vertebrados
8 Aves
9 Galliformes
10 Aves
11 Gallus gallus
12 Cada cierto tiempo las gallinas se ponen cluecas, es decir, dejan de poner y muestran una gran propensión a sentarse sobre sus nidos para incubar los huevos. Después de unas semanas (21 dÃas) salen de 10 a 12 pollos, los cuales pueden echar a correr de inmediato y son capaces de alimentarse por sà mismos.
13 Terrestre
14 Consumidor terciario
15
16
17 Cresta (carúncula) roja y dentada, caÃda a un lado ; pico córneo, corto, fuerte y cónico; los ojos muy vivos, con tres párpados: uno superior, otro inferior y otro transversal y transparente que protege al ojo. El cuerpo es fuerte y pesado; está recubierto de abundantes plumas. Tiene cuatro extremidades: dos alas y dos patas. Las alas están poco desarrolladas, por esto la gallina vuela muy poco. Las patas están recubiertas de escamas y tienen cuatro dedos (tres de ellos dirigidos hacia adelante y uno hacia atrás).
18
19
20 ')
21 );
1 fila creada.
SQL>
SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie)
2 VALUES ('esp02', 'Oso panda', 'Mamiferos', 'Carnivoros', sys.XMLType.createXML('
3
4 Oso panda
5 Animal
6 Cordado
7 Vertebrados
8 Mamiferos
9 Carnivoros
10 Ursidae
11 Ailuropoda melanoleuca
12 Una o dos crÃas minúsculas, ciegas y desvalidas
13 Terrestre
14 Consumidor terciario
15
16
17 Es un carnÃvoro, de color blanco y negro
18
19
20 Le han usurpado el nombre al pequeño panda, que en principio se llamó oso gato, pero que ahora se conoce como "panda menor o común" o "panda rojo", para diferenciarlos
21
22
23 ')
24 );
1 fila creada.
SQL>
SQL>
SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie)
2 VALUES ('esp03', 'Periquito Atolero o del PacÃfico Mexicano', 'Aves', 'Psitaciformes', sys.XMLType.createXML('
3
4 Periquito Atolero o del PacÃfico Mexicano
5 Animal
6 Cordados
7 Vertebrados
8 Aves
9 Psitaciformes
10 Psittacidae (Psitácidos)
11 Aratinga canicularis
12 De dos a cuatro polluelos
13 Terrestre
14 Consumidor secundario
15
16
17 Es un perico pequeño con la parte superior del cuerpo verde brillante, más amarillo y claro por debajo y con un tinte oliva en el pecho; la frente es naranja o amarillo-naranja (reducido en los juveniles) y presentan un parche color azul opaco en la corona
18
19
20 El forro de las alas es oliva amarillento, y las remeras azules en su mayorÃa, al igual que la punta de su larga cola. El iris es amarillo y el anillo ocular desnudo es amarillo naranja. Tienen el pico ganchudo, fuerte y blancuzco; las patas son color grisáceo apagado, con dos dedos hacia delante y dos hacia atrás, lo que les permite agarrarse bien de las ramas de los árboles
21
22
23 Esta especie mide aproximadamente 24cm. y pesa 80 gr
24
25
26 ')
27 );
1 fila creada.
SQL>
SQL> INSERT INTO especies_tab (especie_id, nombreComun, clase, orden, descEspecie)
2 VALUES ('esp04', 'Ballena azul', 'Mamiferos', 'Cetáceos', sys.XMLType.createXML('
3
4 Ballena azul
5 Animal
6 Cordado
7 Vertebrados
8 Mamiferos
9 Cetáceos
10 Balenoptéridos
11 Balaenoptera musculus
12 Sólo una crÃa en cada gestación
13 Acuático
14 Consumidor terciario
15
16
17 La ballena azul o rorcual azul gigante es el animal más grande. La longitud media de esta especie es de 24 m, pero puede medir hasta 33 metros. La hembra suele ser más grande que el macho, pues pueden llegar a pesar de 84 a 150 toneladas
18
19
20 Su cuerpo en realidad es gris azulado con manchas pálidas, lo que permite a los investigadores identificarlas mejor. Se ven de color azul cuando están bajo el agua y el dÃa es soleado. Los superficies inferiores a menudo se cubren con microorganismos, que dan al vientre un tinte amarillento Tienen una aleta dorsal pequeña (35 cm.) en comparación con el tamaño de su cuerpo y está muy cercana a la aleta caudal (cola)
21
22
23 ')
24 );
1 fila creada.
SQL>
SQL> -- Tabla ANIMALES_TAB
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani01',
3 'Perico',
4 'macho',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Perico
9
10
11
12 Se mostró agresivo y nervioso ante la presencia de un grupo de niños
13
14
15
16 ')
17 FROM especies_tab e
18 WHERE e.especie_id = 'esp00';
1 fila creada.
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani02',
3 'Rosita',
4 'hembra',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Rosita
9
10
11
12
13 ')
14 FROM especies_tab e
15 WHERE e.especie_id = 'esp00';
1 fila creada.
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani03',
3 'Turuleta',
4 'hembra',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Turuleta
9
10
11
12 Se mostró decaído y reacio a comer
13
14
15 Se mostró decaído y reacio a comer. Parece padecer un cuadro de extrés
16
17
18 Se alimenta con normalidad
19
20
21
22 ')
23 FROM especies_tab e
24 WHERE e.especie_id = 'esp01';
1 fila creada.
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani04',
3 'Pancho',
4 'macho',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Pancho
9
10
11
12 Atacó a un cuidador. Fue necesario reducirlo mediante sedantes
13
14
15
16 ')
17 FROM especies_tab e
18 WHERE e.especie_id = 'esp02';
1 fila creada.
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani05',
3 'Manchita',
4 'hembra',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Manchita
9
10
11
12
13 ')
14 FROM especies_tab e
15 WHERE e.especie_id = 'esp02';
1 fila creada.
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani06',
3 'Pepe',
4 'macho',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Pepe
9
10
11
12
13 ')
14 FROM especies_tab e
15 WHERE e.especie_id = 'esp03';
1 fila creada.
SQL>
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani07',
3 'Pepa',
4 'hembra',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Pepa
9
10
11
12
13 ')
14 FROM especies_tab e
15 WHERE e.especie_id = 'esp03';
1 fila creada.
SQL>
SQL> INSERT INTO animales_tab
2 SELECT 'ani08',
3 'Moby Dick',
4 'hembra',
5 ref(e),
6 sys.XMLType.createXML('
7
8 Moby Dick
9
10
11
12 Tras su llegada al zoo parece presentar problemas para adaptarse al su habitáculo, golpea los cristales y se teme que pueda llegar a lastimarse
13
14
15 Nos hemos visto obligados a administrar un sedante al animal
16
17 El animal parece haberse adaptado totalmente al habitáculo, en unos días será presentado al público
18
19
20
21 ')
22 FROM especies_tab e
23 WHERE e.especie_id = 'esp04';
1 fila creada.
SQL>
SQL>
SQL>
SQL>
SQL> -- Tabla CUIDADORES_TAB
SQL>
SQL> INSERT INTO cuidadores_tab
2 VALUES( cuidador_t(
3 '123456789X',
4 'Jorge',
5 '654765876',
6 conj_animales_t())
7 );
1 fila creada.
SQL>
SQL> -- Inserciones en la tabla anidada
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '123456789X')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani01';
1 fila creada.
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '123456789X')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani02';
1 fila creada.
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '123456789X')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani04';
1 fila creada.
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '123456789X')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani05';
1 fila creada.
SQL>
SQL>
SQL> -- Tabla CUIDADORES_TAB
SQL>
SQL> INSERT INTO cuidadores_tab
2 VALUES( cuidador_t(
3 '2234467789W',
4 'Alicia',
5 '666665876',
6 conj_animales_t())
7 );
1 fila creada.
SQL>
SQL> -- Inserciones en la tabla anidada
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '2234467789W')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani08';
1 fila creada.
SQL> -- Tabla CUIDADORES_TAB
SQL>
SQL> INSERT INTO cuidadores_tab
2 VALUES( cuidador_t(
3 '555767789T',
4 'Rubén',
5 '666885556',
6 conj_animales_t())
7 );
1 fila creada.
SQL>
SQL> -- Inserciones en la tabla anidada
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '555767789T')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani03';
1 fila creada.
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '555767789T')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani06';
1 fila creada.
SQL>
SQL> INSERT INTO TABLE(SELECT c.animales
2 FROM cuidadores_tab c
3 WHERE c.dni = '555767789T')
4 SELECT ref(a)
5 FROM animales_tab a
6 WHERE a.animal_id = 'ani07';
1 fila creada.
SQL>
SQL> -- Indexacion!
SQL>
SQL> DROP INDEX especies_index;
DROP INDEX especies_index
*
ERROR en línea 1:
ORA-01418: el índice especificado no existe
SQL>
SQL> CREATE INDEX especies_index ON especies_tab(descEspecie)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS ('section group CTXSYS.PATH_SECTION_GROUP');
Índice creado.
SQL>
SQL> -- Indexacion!
SQL>
SQL> DROP INDEX animales_index;
DROP INDEX animales_index
*
ERROR en línea 1:
ORA-01418: el índice especificado no existe
SQL>
SQL> CREATE INDEX animales_index ON animales_tab(descripcion)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS ('section group CTXSYS.PATH_SECTION_GROUP');
Índice creado.
SQL>
SQL>
SQL> spool off