Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMMIT;
END poblar_detalle_atenmedicas_mensuales;
/
-----****************************************-----
-----FUNCIONES PARA EL CALCULO DEL VARIABLES------
SELECT porcentaje_descto
INTO v_porcentaje
FROM PORC_DESCTO_3RA_EDAD
WHERE v_edad BETWEEN anno_ini AND anno_ter;
RETURN v_porcentaje;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END obtener_descuento_tercera_edad;
/
-- PRUEBA DE FUNCION CON PACIENTE RUT 3911077 SIN DV
EXEC
BEGIN
DBMS_OUTPUT.PUT_LINE('El descuento es: ' ||
obtener_descuento_tercera_edad(3911077));
END;
/
--------------------------------------------------
--- FUNCION PARA OBTENER ESPECIALIDAD MEDICO------
--------------------------------------------------
CREATE OR REPLACE FUNCTION obtener_especialidad_medico(p_med_run NUMBER) RETURN
VARCHAR2 IS
v_id_esp NUMBER;
v_nombre_esp VARCHAR2(25);
BEGIN
-- Lógica para obtener la especialidad del médico con el Rut proporcionado
SELECT m.esp_id INTO v_id_esp
FROM medico m
WHERE m.med_rut = p_med_run;
RETURN v_nombre_esp;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- Manejar la excepción cuando no se encuentra el médico
RETURN NULL;
END obtener_especialidad_medico;
/
-- PRUEBA DE FUNCION CON MEDICO RUT 3126425 SIN DV
EXEC
BEGIN
DBMS_OUTPUT.PUT_LINE('La especialidad es: ' ||
obtener_especialidad_medico(3126425));
END;
/
------------------------------------------
----- FUNCION PARA UNIDAD ATENCION--------
------------------------------------------
CREATE OR REPLACE FUNCTION obtener_unidad_atencion(p_ate_id NUMBER) RETURN VARCHAR2
IS
v_unidad_id NUMBER;
v_nombre_unidad VARCHAR2(25);
BEGIN
SELECT u.uni_id
INTO v_unidad_id
FROM atencion a
JOIN medico m ON a.med_rut = m.med_rut
JOIN unidad u ON m.uni_id = u.uni_id
WHERE a.ate_id = p_ate_id;
SELECT u.nombre
INTO v_nombre_unidad
FROM unidad u
WHERE u.uni_id = v_unidad_id;
RETURN v_nombre_unidad;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL; -- Manejar la situación en la que no se encuentra la atención
médica
END obtener_unidad_atencion;
/
-- PRUEBA DE FUNCION CON ATENCION ID 279
EXEC
BEGIN
DBMS_OUTPUT.PUT_LINE('La unidad de atencion es: ' ||
obtener_unidad_atencion(279));
END;
/
------------------------------------------
------FUNCION_PARA_CARGO_MEDICO--------
------------------------------------------
SELECT c.nombre
INTO v_cargo
FROM cargo c
WHERE c.car_id = v_car_id;
RETURN v_cargo;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL; -- Manejar la situación en la que no se encuentra el médico
END obtener_cargo_medico_func;
/
-- PRUEBA DE FUNCION CON RUT MEDICO 3126425 SIN DV
EXEC
BEGIN
DBMS_OUTPUT.PUT_LINE('El cargo del medico es: ' ||
obtener_cargo_medico_func(3126425));
END;
/