Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.94 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE ejer2
  2.  
  3. IS
  4.  
  5.     v_apellidos persona.apellidos_persona%TYPE;
  6.     v_nombre persona.nombre_persona%TYPE;
  7.     v_dni_p piso.dni_p%TYPE;
  8.     CURSOR propietarios IS SELECT persona.apellidos_persona, persona.nombre_persona, piso.dni_p FROM persona, piso WHERE persona.dni = piso.dni_p;
  9.  
  10.     v_escalera piso.escalera%TYPE;
  11.     v_planta piso.planta%TYPE;
  12.     v_puerta piso.puerta%TYPE;
  13.     v_calle piso.calle%TYPE;
  14.     v_numero piso.numero%TYPE;
  15.     CURSOR datos_casas IS SELECT escalera, planta, puerta, calle, numero FROM piso WHERE dni_p = v_dni_p;
  16.    
  17.     v_cantidad NUMBER(10);
  18.     CURSOR pisos_bloque IS SELECT COUNT(*) FROM piso WHERE calle = v_calle AND numero = v_numero AND dni_p = v_dni_p;
  19.    
  20.     v_num_viviendas NUMBER(10);
  21.     CURSOR num_viviendas IS SELECT COUNT(*) FROM piso WHERE dni_p = v_dni_p GROUP BY dni_p;
  22.    
  23. BEGIN
  24.  
  25.     OPEN propietarios;
  26.    
  27.     LOOP
  28.        
  29.         EXIT WHEN propietarios%notfound;
  30.    
  31.         FETCH propietarios INTO v_apellidos, v_nombre, v_dni_p;
  32.    
  33.         DBMS_OUTPUT.put_line('Propietario: ' || v_apellidos || ' ' || v_nombre);
  34.    
  35.         OPEN datos_casas;
  36.        
  37.         LOOP
  38.        
  39.             EXIT WHEN datos_casas%notfound;
  40.        
  41.             FETCH datos_casas INTO v_escalera, v_planta, v_puerta, v_calle, v_numero;
  42.        
  43.             DBMS_OUTPUT.put_line('Datos casas: ' || v_escalera || ' ' || v_planta || ' ' || v_puerta);
  44.            
  45.             OPEN pisos_bloque;
  46.            
  47.             LOOP
  48.            
  49.                 EXIT WHEN pisos_bloque%notfound;
  50.            
  51.                 FETCH pisos_bloque INTO v_cantidad;
  52.                
  53.                 DBMS_OUTPUT.put_line('Pisos del bloque: ' || v_cantidad);
  54.                
  55.                 OPEN num_viviendas;
  56.                
  57.                 LOOP
  58.                
  59.                     EXIT WHEN num_viviendas%notfound;
  60.                
  61.                     FETCH num_viviendas INTO v_num_viviendas;
  62.                
  63.                     DBMS_OUTPUT.put_line('NΒΊ Viviendas: ' || v_num_viviendas);
  64.                
  65.                 END LOOP;
  66.                
  67.                 CLOSE num_viviendas;
  68.            
  69.             END LOOP;
  70.            
  71.             CLOSE pisos_bloque;
  72.        
  73.         END LOOP;
  74.        
  75.         CLOSE datos_casas;
  76.        
  77.         DBMS_OUTPUT.put_line('----------------------------------------');
  78.    
  79.     END LOOP;
  80.    
  81.     CLOSE propietarios;
  82.    
  83. END;
  84. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement