agregar el primer procedimiento
This commit is contained in:
parent
23a3e09fc3
commit
92edb13f49
51
procedures.sql
Normal file
51
procedures.sql
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
-- Stored procedure 1
|
||||||
|
-- Se usa el año para mostrar los resultados en tal año
|
||||||
|
-- Si se pasa el valor 0 por el año se muestra por todos los años en vez de un año especifico
|
||||||
|
CREATE OR REPLACE PROCEDURE CUADRO_HONOR(ANO_IN INTEGER)
|
||||||
|
IS
|
||||||
|
V_NOMBRE PAIS.NOMBRE%TYPE;
|
||||||
|
V_PUNTAJE INTEGER;
|
||||||
|
|
||||||
|
CURSOR C_GANAR IS
|
||||||
|
SELECT
|
||||||
|
P2.NOMBRE,
|
||||||
|
SUM(
|
||||||
|
CASE
|
||||||
|
WHEN TRIM(LOWER(M.DESCRIPCION)) = 'oro' THEN
|
||||||
|
3
|
||||||
|
WHEN TRIM(LOWER(M.DESCRIPCION)) = 'plata' THEN
|
||||||
|
2
|
||||||
|
WHEN TRIM(LOWER(M.DESCRIPCION)) = 'bronce' THEN
|
||||||
|
1
|
||||||
|
ELSE
|
||||||
|
0
|
||||||
|
END
|
||||||
|
) AS PUNTAJE
|
||||||
|
FROM GANAR G
|
||||||
|
JOIN COMPETER_POR C ON (C.ID_ATLETA = G.ID_ATLETA)
|
||||||
|
JOIN PERTENECER P ON (P.ID_DELEGACION = C.ID_DELEGACION)
|
||||||
|
JOIN PAIS P2 ON (P2.ID_PAIS = P.ID_PAIS)
|
||||||
|
JOIN MEDALLA M ON (M.ID_MEDALLA = G.ID_MEDALLA)
|
||||||
|
WHERE (
|
||||||
|
ANO_IN =
|
||||||
|
CASE
|
||||||
|
WHEN ANO_IN != 0 THEN
|
||||||
|
EXTRACT(YEAR FROM G.FECHA)
|
||||||
|
ELSE
|
||||||
|
ANO_IN
|
||||||
|
END
|
||||||
|
)
|
||||||
|
GROUP BY P2.NOMBRE
|
||||||
|
ORDER BY PUNTAJE DESC;
|
||||||
|
BEGIN
|
||||||
|
OPEN C_GANAR;
|
||||||
|
FETCH C_GANAR INTO V_NOMBRE, V_PUNTAJE;
|
||||||
|
DBMS_OUTPUT.PUT_LINE('País' || CHR(9) || CHR(9) || 'Puntaje');
|
||||||
|
WHILE C_GANAR%FOUND
|
||||||
|
LOOP
|
||||||
|
DBMS_OUTPUT.PUT_LINE(V_NOMBRE || CHR(9) || CHR(9) || V_PUNTAJE);
|
||||||
|
FETCH C_GANAR INTO V_NOMBRE, V_PUNTAJE;
|
||||||
|
END LOOP;
|
||||||
|
CLOSE C_GANAR;
|
||||||
|
END;
|
||||||
|
\
|
Loading…
Reference in New Issue
Block a user