La declaración de los atributos la puedes realizar de forma muy similar a declaración de las variables, es decir, utilizando un nombre y un tipo de dato. Dicho nombre debe ser único dentro del tipo de objeto, aunque puede ser reutilizado en otros tipos de objeto. El tipo de dato que puede almacenar un determinado atributo puede ser cualquiera de los tipos de Oracle excepto los siguientes:
LONG
yLONG RAW
.ROWID
yUROWID
.- Los tipos específicos
PL/SQL BINARY_INTEGER
(y sus subtipos),BOOLEAN
,PLS_INTEGER
,RECORD
,REF CURSOR
,%TYPE
, y%ROWTYPE
. - Los tipos definidos dentro de un paquete
PL/SQL
.
Debes tener en cuenta que no puedes inicializar los atributos usando el operador de asignación, ni la cláusula DEFAULT
, ni asignar la restricción NOT NULL
.
El tipo de dato de un atributo puede ser otro tipo de objeto, por lo que la estructura de datos puede ser tan complicada como sea necesario.
CREATE OR REPLACE TYPE Usuario AS OBJECT (
login VARCHAR2(10),
nombre VARCHAR2(30),
f_ingreso DATE,
credito NUMBER
);
/
Después de haber sido creado el tipo de objeto, se pueden modificar sus atributos utilizando la sentencia ALTER TYPE
. Si se desean añadir nuevos atributos se añadirá la cláusula ADD ATTRIBUTE
seguida de la lista de nuevos atributos con sus correspondientes tipos de dato. Utilizando MODIFY ATTRIBUTE
se podrán modificar los atributos existentes, y para eliminar atributos se dispone de manera similar de DROP ATTRIBUTE
.
Aquí tienes varios ejemplos de modificación del tipo de objeto Usuario creado anteriormente:
ALTER TYPE Usuario DROP ATTRIBUTE f_ingreso;
ALTER TYPE Usuario ADD ATTRIBUTE (apellidos VARCHAR2(40), localidad VARCHAR2(50));
ALTER TYPE Usuario
ADD ATTRIBUTE cp VARCHAR2(5),
MODIFY ATTRIBUTE nombre VARCHAR2(35);