Saltar la navegación

4.3.1.- Objetos. Funciones mapa y funciones de orden.

En la mayoría de los problemas es necesario hacer comparaciones entre tipos de datos, ordenarlos, etc. Sin embargo, los tipos de objetos no tienen orden predefinido por lo que no podrán ser comparados ni ordenados (x>y, DISTINCT, ORDER BY, ...). Nosotros podemos definir el orden que seguirá un tipo de objeto por medio de las funciones mapa y las funciones de orden.

Una función miembro mapa es una función sin parámetros que devuelve un tipo de dato: DATE, NUMBER o VARCHAR2 y sería similar a una función hash. Se definen anteponiendo la palabra clave MAP y sólo puede haber una para el tipo de objeto.

CREATE TYPE Familia AS OBJECT (
identificador      NUMBER,
nombre           VARCHAR2(20),
familia_          NUMBER,
oficina_          NUMBER,
MAP MEMBER FUNCTION orden RETURN NUMBER,
...
);
     
CREATE TYPE BODY Familia AS
MAP MEMBER FUNCTION orden RETURN NUMBER IS
BEGIN
     RETURN identificador;
END;
...
END;

Una función miembro de orden es una función que acepta un parámetro del mismo tipo del tipo de objeto y que devuelve un número negativo si el objeto pasado es menor, cero si son iguales y un número positivo si el objeto pasado es mayor.

CREATE TYPE Oficina AS OBJECT (
     identificador          NUMBER,
     nombre               VARCHAR2(20),
     ...
     ORDER MEMBER FUNCTION igual ( ofi Oficina ) RETURN INTEGER,
     ...
);
     
CREATE TYPE BODY Oficina AS
     ORDER MEMBER FUNCTION igual ( ofi Oficina ) RETURN INTEGER IS
     BEGIN
          IF (identificador < ofi.identificador) THEN
               RETURN –1;
          ELSIF (identificador = ofi.identificador) THEN
               RETURN 0;
          ELSE
               RETURN 1;
          END IF;
     END;
     ...
END;

Autoevaluación

Pregunta

Los métodos de un objeto sólo pueden ser procedimientos.

Respuestas

Verdadero.

Falso.

Retroalimentación


Pregunta

El orden de un objeto se consigue:

Respuestas

Al crearlo.

En PL/SQL los objetos no pueden ser ordenados.

Mediante las funciones mapa y las funciones de orden.

Retroalimentación