Advertisement
DimasDark

SQLTSTE

Aug 13th, 2014
2,495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE TYPE tp_treinamento AS OBJECT(
  2.  cod integer,
  3.  nome varchar2(30),
  4.  objetivo varchar2(30),
  5.  membros tp_nt_participa,
  6.  member function getNumberMembers RETURN integer,
  7.  map member function treinaToNome return varchar2);
  8. /
  9.  
  10. CREATE OR REPLACE TYPE BODY tp_treinamento AS
  11. MEMBER FUNCTION getNumberMembers RETURN INTEGER AS
  12. BEGIN
  13.     RETURN SELF.MEMBROS.count();
  14. END;
  15. MAP MEMBER FUNCTION treinaToNome return varchar2 AS
  16. p VARCHAR2(30) := nome;
  17. BEGIN
  18.    RETURN p;
  19. END;
  20. END;
  21. /
  22.  
  23. INSERT INTO tb_treinamento VALUES
  24.  (tp_treinamento(1, 'Condicionamento Fisico', 'Hipertrofia', tp_nt_participa
  25. (tp_participa((SELECT REF(M) FROM tb_membros M WHERE M.cod = 1),
  26. va_tp_horario(
  27.  tp_horario('Segunda', to_date('10:00', 'HH24:MI')),
  28.  tp_horario('Quarta', to_date('15:00', 'HH24:MI')),
  29.  tp_horario('Sexta', to_date('19:00', 'HH24:MI')))),
  30. tp_participa((SELECT REF(M) FROM tb_membros M WHERE M.cod = 2),
  31. va_tp_horario(
  32.  tp_horario('Quarta', to_date('08:00', 'HH24:MI')),
  33.  tp_horario('Quinta', to_date('07:00', 'HH24:MI')),
  34.  tp_horario('Terça', to_date('11:00', 'HH24:MI')))))));
  35.  
  36.  INSERT INTO tb_treinamento VALUES
  37.  (2, 'Pilates', 'Resistencia', tp_nt_participa());
  38.  
  39.   INSERT INTO tb_treinamento VALUES
  40.  (3, 'Corrida', 'Resistencia', tp_nt_participa());
  41.  
  42. SELECT T.objetivo,
  43. DEREF(M.membro).nome AS nome,
  44. DEREF(M.membro).altura AS altura,
  45. DEREF(M.membro).medidas.torax AS torax,
  46. DEREF(M.membro).medidas.biceps AS biceps,
  47. DEREF(M.membro).medidas.coxa AS coxa,
  48. A.dia AS DIA, to_char(A.hora, 'HH24:MI') AS HORA
  49. FROM tb_treinamento T, TABLE(T.membros) M, TABLE(M.aula) A WHERE T.nome = 'Resistencia';
  50.  
  51. SELECT T.objetivo, T.membros FROM tb_treinamento T WHERE T.nome = 'Condicionamento Fisico';
  52.  
  53. SELECT DEREF(M.membro).nome AS MAIS_VELHO FROM tb_treinamento T,
  54. TABLE(T.membros) M WHERE M.membro.idade = (SELECT MAX(F.idade) FROM tb_membros F);
  55.  
  56.  
  57.  DECLARE
  58.  membro tp_membros;
  59.  BEGIN
  60.  SELECT VALUE(M) INTO membro FROM tb_membros M WHERE
  61. M.cod = 1;
  62.  membro.relatorio();
  63.  END;
  64.  /
  65.  
  66.  DECLARE
  67.  membro tp_membros;
  68.  cod integer;
  69.  CURSOR es_membro IS
  70.  SELECT VALUE(M) FROM tb_membros M where M.cod = cod;
  71.  BEGIN
  72.  OPEN es_membro;
  73.  cod := 0;
  74.  LOOP
  75.  FETCH es_membro INTO membro;
  76.  EXIT WHEN es_membro%NOTFOUND;
  77.  cod := cod + 1;
  78.  membro.relatorio();
  79.  END LOOP;
  80.  CLOSE es_membro;
  81.  END;
  82.  /
  83.  
  84.  
  85.  
  86.  
  87. ALTER TYPE tp_membros
  88. ADD MEMBER PROCEDURE imprime CASCADE;
  89. CREATE OR REPLACE TYPE BODY tp_membros AS
  90. MEMBER PROCEDURE imprime IS
  91. cod integer;
  92. CURSOR es_membro IS
  93. SELECT VALUE(M) FROM tb_membros M where M.cod = cod;
  94. BEGIN
  95. cod := 0;
  96. FOR membro IN es_membro LOOP
  97. membro.relatorio();
  98. cod := cod + 1;
  99. END LOOP;
  100. END;
  101. END;
  102.  
  103.  
  104. /
  105.  
  106. set serveroutput on;
  107. DECLARE
  108. CTX DBMS_XMLGEN.CTXHANDLE;
  109. RESULT CLOB;
  110. BEGIN
  111. CTX := DBMS_XMLGEN.NEWCONTEXT('SELECT * FROM tb_treinamento');
  112. DBMS_XMLGEN.SETROWSETTAG(CTX, 'Membros');
  113. DBMS_XMLGEN.SETROWTAG(CTX, 'Membro');
  114. RESULT := DBMS_XMLGEN.GETXML(CTX);
  115. DBMS_OUTPUT.PUT_LINE(RESULT);
  116. DBMS_XMLGEN.CLOSECONTEXT(CTX);
  117. END;
  118. /
  119.  
  120. <!DOCTYPE MEMBROS[
  121.     <!ELEMENT TREINAMENTOS(trainamento+)>
  122.     <!ELEMENT TREINAMENTO(parametros)>
  123.     <!ELEMENT blablabla(#PCDATA)
  124.     ...
  125.    
  126.     S
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement