Vous êtes sur la page 1sur 5

1.

Crear un tipo de objetos llamado MiembroEscolar con las siguientes atributos: codigo, dni,
nombre, apellidos, sexo y fecha_nac.

CREATE OR REPLACE TYPE MiembroEscolar AS OBJECT (

codigo INTEGER,

dni VARCHAR2(9),

nombre VARCHAR2(20),

apellidos VARCHAR2(35),

sexo VARCHAR2(1),

fecha_nac DATE

) NOT FINAL;

2. Crea, como tipo heredado de MiembroEscolar, el tipo de objeto Profesor. Los atributos
para este tipo heredado serán: especialidad y antigüedad.

CREATE OR REPLACE TYPE Profesor UNDER MiembroEscolar (

especialidad VARCHAR2(25),

antiguedad INTEGER

);

3. Crear un método constructor para el tipo de objetos Profesor, en el que se indiquen como
parámetros el código, nombre, primer apellido, segundo apellido y especialidad. Este
método debe asignar al atributo apellidos los datos de primer apellido y segundo apellido
que se han pasado como parámetros, uniéndolos con un espacio entre ellos.

CREATE OR REPLACE TYPE Profesor UNDER MiembroEscolar (

especialidad VARCHAR2(25),

antiguedad INTEGER

CONSTRUCTOR FUNCTION Profesor (codigo INTEGER, nombre VARCHAR2,


primer_apellido VARCHAR2, segundo_apellido VARCHAR2, especialidad VARCHAR2)

RETURN SELF AS RESULT

);

/
CREATE OR REPLACE TYPE BODY Profesor AS

CONSTRUCTOR FUNCTION Profesor (codigo INTEGER, nombre VARCHAR2,


primer_apellido VARCHAR2, segundo_apellido VARCHAR2, especialidad VARCHAR2)

RETURN SELF AS RESULT IS

BEGIN

SELF.codigo := codigo;

SELF.nombre := nombre;

SELF.apellidos := CONCAT (primer_apellido||' '||segundo_apellido);

SELF.especialidad := especialidad;

RETURN SELF.apellidos

END;

END;

4. Dentro del código del ejercicio 3, crear un método llamado getNombreCompleto para el
tipo de objetos Profesor que permita obtener su nombre completo con el formato apellidos
nombre.

CREATE OR REPLACE TYPE Profesor UNDER MiembroEscolar (

especialidad VARCHAR2(25),

antiguedad INTEGER

CONSTRUCTOR FUNCTION Profesor (codigo INTEGER, nombre VARCHAR2,


primer_apellido VARCHAR2, segundo_apellido VARCHAR2, especialidad VARCHAR2)

RETURN SELF AS RESULT

);

CREATE OR REPLACE TYPE BODY Profesor AS

CONSTRUCTOR FUNCTION Profesor (codigo INTEGER, nombre VARCHAR2,


primer_apellido VARCHAR2, segundo_apellido VARCHAR2, especialidad VARCHAR2)

RETURN SELF AS RESULT IS

BEGIN
SELF.codigo := codigo;

SELF.nombre := nombre;

SELF.apellidos := CONCAT (primer_apellido||' '||segundo_apellido);

SELF.especialidad := especialidad;

RETURN SELF.apellidos

END;

MEMBER PROCEDURE getNombreCompleto RETURN VARCHAR2 IS

BEGIN

RETURN (apellidos ||' '|| nombre) ;

END getNombreCompleto;

END;

5. Crear el tipo de objeto Cursos con los siguientes atributos: codigo, nombre, max_Alumn,
fecha_Inic, fecha_Fin y num_Horas.

CREATE OR REPLACE TYPE CursosClase AS OBJECT (

codigo INTEGER(9),

nombre VARCHAR2(25),

apellidos VARCHAR2(50),

max_Alumn NUMBER(2),

fecha_Inic DATE,

fecha_Fin DATE,

num_Horas INTEGER

);

6. Crear un método MAP llamado ordenarCursos para el tipo Cursos. Este método debe
comparar entre cursos en función de su orden alfabético.

CREATE OR REPLACE TYPE CursosClase AS OBJECT (

codigo INTEGER(9),
nombre VARCHAR2(25),

apellidos VARCHAR2(50),

max_alumn NUMBER(2),

fecha_inic DATE,

fecha_fin DATE,

num_horas NUMBER,

MAP MEMBER FUNCTION ordenarCursos RETURN VARCHAR2

);

CREATE OR REPLACE TYPE BODY CursosClase AS

MAP MEMBER FUNCTION ordenarCursos RETURN VARCHAR2

IS

BEGIN

RETURN (apellidos || ' ' || nombre);

END ordenarCursos;

END;

7. Crear una colección VARRAY llamada ListaCursos en la que se puedan almacenar hasta 10
objetos Cursos.

DECLARE

TYPE ListaCursos IS VARRAY(10) OF VARCHAR2(35);

V_lista ListaCursos:= ListaCursos('prim_curso', 'seg_curso', 'terc_curso', 'cuar_curso',


'quin_curso', 'sext_curso', 'sept_curso', 'oct_curso', 'nov_curso', 'dec_curso');

BEGIN

V_lista(4) := 'DAM1A';

V_lista(5) := 'DAW1A';

V_lista(6) := 'DAM2A';

END;
/8. Crea, como tipo heredado de MiembroEscolar, el tipo de objeto Alumno.

CREATE OR REPLACE TYPE Alumno UNDER MiembroEscolar (

Curso VARCHAR2(25),

Grupo VARCHAR2(5)

);

/9. Crear una tabla Profesorado de objetos Profesor, e insertar en dicha tabla dos objetos
Profesor.

CREATE TABLE Prof OF Profesor;

DECLARE

prof_1 Profesor;

prof_2 Profesor;

BEGIN

prof_1 := NEW Profesor(6, '123456789', 'Mari Puri', 'De Los Ajones', 'F', '26/04/1969',
'Lenguaje de Marcas', 7);

prof_2 := NEW Profesor(8, '987654321', 'Pepito', 'De los palotes', 'H', '23/07/1966',
'Bases de datos', 5);

INSERT INTO Profesorado VALUES (prof_1);

INSERT INTO Profesorado VALUES(prof_2);

END;

Vous aimerez peut-être aussi