Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE TYPE tp_treinamento AS OBJECT(
- cod integer,
- nome varchar2(30),
- objetivo varchar2(30),
- membros tp_nt_participa,
- member function getNumberMembers RETURN integer,
- map member function treinaToNome return varchar2);
- /
- CREATE OR REPLACE TYPE BODY tp_treinamento AS
- MEMBER FUNCTION getNumberMembers RETURN INTEGER AS
- BEGIN
- RETURN SELF.MEMBROS.count();
- END;
- MAP MEMBER FUNCTION treinaToNome return varchar2 AS
- p VARCHAR2(30) := nome;
- BEGIN
- RETURN p;
- END;
- END;
- /
- INSERT INTO tb_treinamento VALUES
- (tp_treinamento(1, 'Condicionamento Fisico', 'Hipertrofia', tp_nt_participa
- (tp_participa((SELECT REF(M) FROM tb_membros M WHERE M.cod = 1),
- va_tp_horario(
- tp_horario('Segunda', to_date('10:00', 'HH24:MI')),
- tp_horario('Quarta', to_date('15:00', 'HH24:MI')),
- tp_horario('Sexta', to_date('19:00', 'HH24:MI')))),
- tp_participa((SELECT REF(M) FROM tb_membros M WHERE M.cod = 2),
- va_tp_horario(
- tp_horario('Quarta', to_date('08:00', 'HH24:MI')),
- tp_horario('Quinta', to_date('07:00', 'HH24:MI')),
- tp_horario('Terça', to_date('11:00', 'HH24:MI')))))));
- INSERT INTO tb_treinamento VALUES
- (2, 'Pilates', 'Resistencia', tp_nt_participa());
- INSERT INTO tb_treinamento VALUES
- (3, 'Corrida', 'Resistencia', tp_nt_participa());
- SELECT T.objetivo,
- DEREF(M.membro).nome AS nome,
- DEREF(M.membro).altura AS altura,
- DEREF(M.membro).medidas.torax AS torax,
- DEREF(M.membro).medidas.biceps AS biceps,
- DEREF(M.membro).medidas.coxa AS coxa,
- A.dia AS DIA, to_char(A.hora, 'HH24:MI') AS HORA
- FROM tb_treinamento T, TABLE(T.membros) M, TABLE(M.aula) A WHERE T.nome = 'Resistencia';
- SELECT T.objetivo, T.membros FROM tb_treinamento T WHERE T.nome = 'Condicionamento Fisico';
- SELECT DEREF(M.membro).nome AS MAIS_VELHO FROM tb_treinamento T,
- TABLE(T.membros) M WHERE M.membro.idade = (SELECT MAX(F.idade) FROM tb_membros F);
- DECLARE
- membro tp_membros;
- BEGIN
- SELECT VALUE(M) INTO membro FROM tb_membros M WHERE
- M.cod = 1;
- membro.relatorio();
- END;
- /
- DECLARE
- membro tp_membros;
- cod integer;
- CURSOR es_membro IS
- SELECT VALUE(M) FROM tb_membros M where M.cod = cod;
- BEGIN
- OPEN es_membro;
- cod := 0;
- LOOP
- FETCH es_membro INTO membro;
- EXIT WHEN es_membro%NOTFOUND;
- cod := cod + 1;
- membro.relatorio();
- END LOOP;
- CLOSE es_membro;
- END;
- /
- ALTER TYPE tp_membros
- ADD MEMBER PROCEDURE imprime CASCADE;
- CREATE OR REPLACE TYPE BODY tp_membros AS
- MEMBER PROCEDURE imprime IS
- cod integer;
- CURSOR es_membro IS
- SELECT VALUE(M) FROM tb_membros M where M.cod = cod;
- BEGIN
- cod := 0;
- FOR membro IN es_membro LOOP
- membro.relatorio();
- cod := cod + 1;
- END LOOP;
- END;
- END;
- /
- set serveroutput on;
- DECLARE
- CTX DBMS_XMLGEN.CTXHANDLE;
- RESULT CLOB;
- BEGIN
- CTX := DBMS_XMLGEN.NEWCONTEXT('SELECT * FROM tb_treinamento');
- DBMS_XMLGEN.SETROWSETTAG(CTX, 'Membros');
- DBMS_XMLGEN.SETROWTAG(CTX, 'Membro');
- RESULT := DBMS_XMLGEN.GETXML(CTX);
- DBMS_OUTPUT.PUT_LINE(RESULT);
- DBMS_XMLGEN.CLOSECONTEXT(CTX);
- END;
- /
- <!DOCTYPE MEMBROS[
- <!ELEMENT TREINAMENTOS(trainamento+)>
- <!ELEMENT TREINAMENTO(parametros)>
- <!ELEMENT blablabla(#PCDATA)
- ...
- S
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement