---------TIPOS E TABELAS --------------------------DEPARTAMENTO CREATE OR REPLACE TYPE tp_departamento AS OBJECT( ID VARCHAR2(11), Nome VARCHAR2(35), MEMBER PROCEDURE setNome (novoNome VARCHAR2), ORDER MEMBER FUNCTION comparaID (dp tp_departamento) RETURN INTEGER ); / CREATE OR REPLACE TYPE BODY tp_departamento AS MEMBER PROCEDURE setNome (novoNome VARCHAR2) IS BEGIN Nome := novoNome; END; ORDER MEMBER FUNCTION comparaID (dp tp_departamento) RETURN INTEGER IS retorno NUMBER(1); BEGIN IF(Nome > dp.nome) THEN retorno := 1; ELSE IF(Nome < dp.nome) THEN retorno := -1; ELSE retorno := 0; END IF; END IF; RETURN retorno; END; END; / CREATE TABLE tb_departamento OF tp_departamento( ID PRIMARY KEY, nome NOT NULL ); ------------------------------ENDERECO CREATE OR REPLACE TYPE tp_endereco AS OBJECT( Rua VARCHAR2(30), Numero NUMBER(4), Bairro VARCHAR2(20), Cidade VARCHAR2(25), CEP NUMBER(8), Complemento VARCHAR2(50) ); / ------------- TELEFONE -- Especificação create or replace tp_fone as object( ddd number(2), numero varchar2(8) )not final; -- Varray create or replace type tp_va_fone as varray(3) of tp_fone; -------------------------------BOMBEIRO --QUALIFICACOES CREATE OR REPLACE TYPE tp_nt_qualificacao AS TABLE OF VARCHAR2(20); CREATE OR REPLACE TYPE tp_bombeiro AS OBJECT( Matricula VARCHAR2(11), endereco tp_endereco, Nome VARCHAR2(50), Situacao VARCHAR2(15), RG VARCHAR2(7), Idade NUMBER(2), Patente VARCHAR2(15), Salario NUMBER(6,2), InicioDepartamento VARCHAR2(10), ref_departamento REF tp_departamento, ref_supervisor REF tp_bombeiro, qualificacoes tp_nt_qualificacao, fones tp_va_fone MAP MEMBER FUNCTION comparaNome RETURN INTEGER ) NOT FINAL; / CREATE OR REPLACE TYPE BODY tp_bombeiro AS MAP MEMBER FUNCTION comparaNome RETURN INTEGER IS BEGIN RETURN Nome; END; END; / CREATE TABLE tb_bombeiro OF tp_bombeiro( Matricula PRIMARY KEY, Nome NOT NULL, Situacao NOT NULL, RG NOT NULL, Idade NOT NULL, Patente NOT NULL, Salario NOT NULL, ref_departamento WITH ROWID REFERENCES tb_departamento, ref_supervisor WITH ROWID REFERENCES tb_bombeiro )NESTED TABLE qualificacoes STORE AS tb_qualificacoes; ---------- DEPENDENTE -- Especificação create or replace type tp_dependente under tp_pessoa ( -- Referencias matricula REF tp_bombeiro )not final; -- Tabela create table tb_dependente of tp_dependente( -- Referencias matricula WITH ROWID REFERENCES tb_bombeiro ); ------------------- VITIMA create or replace tp_vitima under tp_pessoa( -- Local localidade varchar2(65), -- Referencias ocorrencia ref tp_ocorrencia, socorre ref tp_socorre )not final; create table tb_vitima of tp_vitima( -- Referencias ocorrencia with rowid references tb_ocorrencia, socorre with rowid references tb_socorre ); ----------- SOCORRE -- Especificação create or replace type tp_socorre as object( matricula ref tp_operacional, idviatura ref tp_viatura ); -- Table create table tb_socorre of tp_socorre( matricula primary key, idviatura with rowid references tb_viatura ); -------- VIATURA -- Especificação create or replace tp_viatura as object( -- Local id varchar2(11), tipo varchar2(20), situacao varchar2(20) ); -- Table create table tb_viatura of tp_viatura( -- Local id primary key, situacao not null, ); ------------------- ATENDE -- Especificação create or replace type tp_atende as object( idviatura ref tp_viatura, idocorrencia ref tp_ocorrencia, idoperacional ref tp_operacional ); -- Table create table tb_atende of tp_atende( idviatura with rowid references tb_viatura, idocorrencia with rowid references tb_ocorrencia, idoperacional with rowid references tb_operacional ); ----------------------------OPERACIONAL CREATE OR REPLACE TYPE tp_operacional UNDER tp_bombeiro( especialidade VARCHAR2(20) ); -- Table create table tb_operacional of tp_operacional( ); ----------------------------OCORRENCIA CREATE OR REPLACE TYPE tp_nt_tipo AS TABLE OF VARCHAR2(20); CREATE OR REPLACE TYPE tp_ocorrencia AS OBJECT( id VARCHAR2(11), data VARCHAR2(8), horario VARCHAR2(5), endereco VARCHAR2(50), tipos tp_nt_tipo, endereco tp_endereco ); CREATE TABLE tb_ocorrencia OF tp_ocorrencia( id PRIMARY KEY )NESTED TABLE tipos STORE AS tb_tipos;