Merge pull request #26 from cromerc/procedures

agregar el primer procedimiento
This commit is contained in:
HieloxZack 2020-07-16 20:57:42 -04:00 committed by GitHub
commit 71d879eb59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 51 additions and 0 deletions

51
procedures.sql Normal file
View 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 LOWER(M.DESCRIPCION) = 'oro' THEN
3
WHEN LOWER(M.DESCRIPCION) = 'plata' THEN
2
WHEN 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;
/