viernes, 6 de diciembre de 2013

proc 3 ex cursor

/**
 * 3. Codificar un procedimiento, llamado "incidencias_por_jugador", que indique 
 * el nombre de cada jugador y el número de incidencias que tiene, en caso de 
 * que su número de incidencias sea 0 el mensaje debe de decir 'El jugador <nombre> no tiene incidencias'
 */
CREATE OR REPLACE PROCEDURE incidencias_por_jugador IS

  -- Cursor que recorrera la tabla jugadores
  CURSOR c_jugadores IS
    SELECT * FROM jugadores j;
  
  -- Donde almacenaremos el número de incidencias por cada jugador
  ln_num_incidencias PLS_INTEGER := 0;

BEGIN

  -- Recorremos el cursor
  FOR I IN c_jugadores LOOP
    -- Por cada jugador contamos su número de incidencias
    SELECT COUNT(*) 
    INTO ln_num_incidencias  
    FROM incidencias inc 
    WHERE inc.codjugador = I.codjugador;
    
    -- Si son 0 mostramos un mensaje
    IF ln_num_incidencias = 0 THEN
      DBMS_OUTPUT.PUT_LINE('El jugador ' || I.nombre || ' no tiene incidencias');
    ELSE
      DBMS_OUTPUT.PUT_LINE(I.nombre || ': ' || ln_num_incidencias);
    END IF; 
  
  END LOOP; 

END incidencias_por_jugador;

No hay comentarios:

Publicar un comentario