Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.67 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE ejer2repaso
  2. IS
  3.  
  4. CURSOR propietarios IS SELECT apellidos_persona, nombre_persona, dni FROM persona, piso WHERE persona.dni = piso.dni_p
  5. UNION
  6. SELECT apellidos_persona, nombre_persona, dni FROM persona, casaparticular WHERE persona.dni = casaparticular.dni_cp;
  7.  
  8. apellido persona.apellidos_persona%TYPE;
  9. nombre persona.nombre_persona%TYPE;
  10. dn persona.dni%TYPE;
  11. vcalle piso.calle%TYPE;
  12. vnumero piso.numero%TYPE;
  13. vescalera piso.escalera%TYPE;
  14. vplanta piso.planta%TYPE;
  15. vpuerta piso.puerta%TYPE;
  16. vcallecasa piso.calle%TYPE;
  17. vnumerocasa piso.numero%TYPE;
  18. numcasas NUMBER(2);
  19. numpisos NUMBER(2);
  20.  
  21. CURSOR casas IS SELECT calle, numero FROM casaparticular WHERE dni_cp = dn;
  22. CURSOR pisos IS SELECT calle, numero, escalera, planta, puerta FROM piso WHERE dni_p = dn;
  23.  
  24.  
  25.  
  26. BEGIN
  27.  
  28.  
  29.  
  30. OPEN propietarios;
  31. LOOP
  32. FETCH propietarios INTO apellido, nombre, dn;
  33. EXIT WHEN propietarios%notfound;
  34.     numcasas := 0;
  35.     numpisos := 0;
  36.     DBMS_OUTPUT.put_line (apellido ||', '||nombre);
  37.     OPEN casas;
  38.     LOOP
  39.     FETCH casas INTO vcallecasa,vnumerocasa;
  40.     EXIT WHEN casas%notfound;
  41.         DBMS_OUTPUT.put_line('********Casa: '|| vcallecasa ||', '|| vnumerocasa);
  42.         numcasas := numcasas + 1;
  43.     END LOOP;
  44.  
  45.     OPEN pisos;
  46.     LOOP
  47.     FETCH pisos INTO vcalle,vnumero,vescalera,vplanta,vpuerta;
  48.     EXIT WHEN pisos%notfound;
  49.         DBMS_OUTPUT.put_line('********Piso: '|| vcalle ||', '|| vnumero);
  50.         numpisos := numpisos + 1;
  51.     END LOOP;
  52.     CLOSE casas;
  53.     CLOSE pisos;
  54.     DBMS_OUTPUT.put_line('********Numero de casas: '|| numcasas);
  55.     DBMS_OUTPUT.put_line('********Numero de pisos: '|| numpisos);
  56. DBMS_OUTPUT.put_line('*****************************'); 
  57. END LOOP;
  58. CLOSE propietarios;
  59.  
  60. END;
  61. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement