CREATE OR REPLACE PACKAGE PKG_INCIDENCIAS IS
FUNCTION nueva_incidencia(pn_numincidencia IN INCIDENCIAS.NUMINCIDENCIA%TYPE,
pv_codpartido IN INCIDENCIAS.CODPARTIDO%TYPE,
pv_codjugador IN INCIDENCIAS.CODJUGADOR%TYPE,
pn_minuto IN INCIDENCIAS.MINUTO%TYPE,
pv_tipo IN INCIDENCIAS.TIPO%TYPE) RETURN BOOLEAN;
END PKG_INCIDENCIAS;
/
CREATE OR REPLACE PACKAGE BODY PKG_INCIDENCIAS IS
FUNCTION nueva_incidencia(pn_numincidencia IN INCIDENCIAS.NUMINCIDENCIA%TYPE,
pv_codpartido IN INCIDENCIAS.CODPARTIDO%TYPE,
pv_codjugador IN INCIDENCIAS.CODJUGADOR%TYPE,
pn_minuto IN INCIDENCIAS.MINUTO%TYPE,
pv_tipo IN INCIDENCIAS.TIPO%TYPE) RETURN BOOLEAN IS
aux PLS_INTEGER := 0;
BEGIN
SELECT count(*)
INTO aux
FROM incidencias i
WHERE i.numincidencia = pn_numincidencia;
IF aux <> 0 THEN
RETURN FALSE;
END IF;
SELECT count(*)
INTO aux
FROM jugadores j
WHERE j.codjugador = pv_codjugador;
IF aux = 0 THEN
RETURN FALSE;
END IF;
SELECT count(*)
INTO aux
FROM partidos p
WHERE p.codpartido = pv_codpartido;
IF aux = 0 THEN
RETURN FALSE;
END IF;
IF pn_minuto > 90 OR pn_minuto < 0 THEN
RETURN FALSE;
END IF;
INSERT
INTO incidencias(numincidencia, codpartido, codjugador, minuto, tipo)
VALUES (pn_numincidencia, pv_codpartido, pv_codjugador, pn_minuto, pv_tipo);
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
END PKG_INCIDENCIAS;
BEGIN
IF PKG_INCIDENCIAS.nueva_incidencia(1, '1', '1', 101, 'tarjeta') THEN
DBMS_OUTPUT.PUT_LINE('INSERTADO');
ELSE
DBMS_OUTPUT.PUT_LINE('NO INSERTADO');
END IF;
END;
No hay comentarios:
Publicar un comentario