- Realiza una función ComprobarPago que reciba como parámetros un código de cliente y un código de actividad y devuelva un TRUE si el cliente ha pagado la última actividad con ese código que ha realizado y un FALSE en caso contrario. Debes controlar las siguientes excepciones: Cliente inexistente, Actividad Inexistente, Actividad realizada en régimen de Todo Incluido y El cliente nunca ha realizado esa actividad.
CREATE OR REPLACE PROCEDURE ClienteInexistente (v_codcliente personas.NIF%type) IS
06852683V NUMBER;
BEGIN
SELECT COUNT(*) INTO 06852683V
FROM personas
WHERE NIF=v_codcliente;
IF 06852683V=0 THEN
RAISE_APPLICATION_ERROR(-20001,'El cliente especificado no existe');
ELSE
DBMS_OUTPUT.PUT_LINE('El cliente existe');
END IF;
END;
/
CREATE OR REPLACE PROCEDURE ActividadInexistente (v_codactividad Actividades.Codigo%type)
IS
v_actividad NUMBER;
BEGIN
SELECT count(*) into v_actividad
FROM actividades
WHERE Codigo=v_codactividad;
IF v_actividad=0 then
raise_application_error(-20002,'La actividad especificada no existe');
END IF;
END;
/
CREATE OR REPLACE PROCEDURE ActividadTodoIncluido (v_codactividad Actividades.Codigo%type, v_codcliente Estancias.NIFCliente%type)
IS
v_codreg regimenes.CodigoRegimen%type;
BEGIN
SELECT CodigoRegimen INTO v_codreg
FROM estancias
WHERE NIFCliente=v_codcliente
AND fecha_inicio
AND WHERE Codigo = (
SELECT CodigoEstancia
FROM ActividadesRealizadas
WHERE CodigoActividad=v_codactividad
);
END;
/
CREATE OR REPLACE PROCEDURE ActividadNoRealizada (v_codcliente, v_codactividad)
IS
v_codigoestancia NUMBER;
BEGIN
SELECT count(*) INTO v_codigoestancia
FROM Estancias
WHERE NIFCliente=v_codcliente
AND Codigo = (
SELECT CodigoEstancia
FROM ActividadesRealizadas
WHERE
)
CREATE OR REPLACE PROCEDURE ComprobarPago (v_codcliente, v_codactvidad )
IS
comprobacion
BEGIN
SELECT CodigoActividad
FROM
EXEC ClienteInexistente(‘54890865P’);
SELECT CodigoRegimen FROM estancias WHERE NIFCliente=‘10950967T’ AND Codigo = ( SELECT CodigoEstancia FROM ActividadesRealizadas WHERE CodigoActividad=‘A001’ );
SELECT COUNT(*)
FROM actividadesrealizadas
WHERE codigoactividad='A001' AND codigoestancia=(SELECT codigo FROM estancias WHERE codigoregimen = 'AD');
SELECT CodigoActividad FROM ActividadesRealizadas WHERE Fecha=( SELECT MAX(Fecha) FROM ActividadesRealizadas WHERE CodigoActividad=‘A032’ AND CodigoEstancia=( SELECT Codigo FROM estancias WHERE NIFCliente=‘06852683V’ AND Fecha_Inicio=( SELECT MAX(Fecha_Inicio) FROM estancias WHERE NIFCliente=‘06852683V’ ) ) ) AND abonado!=0;
CREATE OR REPLACE PROCEDURE PrecioDeRegimen (v_codregimen Tarfias.CodigoRegimen%type, v_añadido OUT NUMBER)
IS
v_PrecioBaseAD NUMBER(6,2);
v_PrecioBaseMP NUMBER(6,2);
v_PrecioBasePC NUMBER(6,2);
v_PrecioBaseTI NUMBER(6,2);
BEGIN
v_PrecioBaseAD:=30;
v_PrecioBaseMP:=45;
v_PrecioBasePC:=65;
v_PrecioBaseTI:=80;
IF v_codregimen='AD'
THEN
v_añadido:=v_PrecioBaseAD;
ELSE IF v_codregimen='MP'
THEN
v_añadido:=v_PrecioBaseMP;
ELSE IF v_codregimen='PC'
THEN
v_añadido:=v_PrecioBasePC;
ELSE IF v_codregimen='TI'
THEN
v_añadido:=v_PrecioBaseTI;
END IF;
END;
/
CREATE OR REPLACE TRIGGER PrecioDeHabitacion
DECLARE
BEGIN