Está en la página 1de 2

EJEMPLO 01.

-
SQL> CREATE TYPE Cubo AS OBJECT (
2 largo INTEGER,
3 ancho INTEGER,
4 alto INTEGER,
5 MEMBER FUNCTION superficie RETURN INTEGER,
6 MEMBER FUNCTION volumen RETURN INTEGER,
7 MEMBER PROCEDURE mostrar ());
8 /
Tipo creado.
SQL> CREATE TYPE BODY Cubo AS
2 MEMBER FUNCTION volume RETURN INTEGER IS
3 BEGIN
4 RETURN largo * ancho * alto;
5 END;
6 MEMBER FUNCTION superficie RETURN INTEGER IS
7 BEGIN
8 RETURN 2 * (largo * ancho + largo * alto + ancho * alto);
9 END;
10 MEMBER PROCEDURE mostrar ()
11 IS
12 BEGIN
13 DBMS_OUTPUT.PUT_LINE('Largo: ' || largo || ' - ' || ‘Ancho: ' ||
ancho || ' - ' || ‘Alto: ' || alto);DBMS_OUTPUT.PUT_LINE('Volumen: '
|| volumen || ' - ' || 'Superficie: ' || superficie);
14 END;
15 END;
16 /

EJEMPLO 02.-
SQL> CREATE TYPE direccion_ty AS OBJECT (
2 calle VARCHAR2(200),
3 ciudad VARCHAR2(200),
4 prov CHAR(2),
5 codpos VARCHAR2(20) );
6 /
Tipo creado.
SQL> CREATE TYPE cliente_ty AS OBJECT (
2 clinum NUMBER,
3 clinomb VARCHAR2(200),
4 direccion direccion_ty,
5 telefono VARCHAR2(20),
6 fecha_nac DATE,
7 MEMBER FUNCTION edad RETURN NUMBER,
8 PRAGMA RESTRICT_REFERENCES(edad,WNDS)
9 ) ;
10 /
Tipo creado.

SQL> CREATE OR REPLACE TYPE BODY cliente_ty AS


2 MEMBER FUNCTION edad RETURN NUMBER IS
3 a NUMBER;
4 d DATE;
5 BEGIN
6 d:= today();
7 a:= d.año - fecha_nac.año;
8 IF (d.mes < fecha_nac.mes) OR
9 ((d.mes = fecha_nac.mes) AND (d.dia < fecha_nac.dia))
10 THEN a:= a+1;
11 END IF;
12 RETURN a;
13 END;
14 END;
15 /

También podría gustarte