0% encontró este documento útil (0 votos)
62 vistas7 páginas

Lab 4

Cargado por

Henry Javier
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
62 vistas7 páginas

Lab 4

Cargado por

Henry Javier
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad Tecnológica de Panamá

Facultad de Sistema de Computacionales

Licenciatura de Ingeniería de Software

Implementacion de Base de Datos II


Laboratorio N°4

Profesor: Henry Lezcano

Estudiante:

Jhonathan Vargas 20-58-7117

Salón: 1SF131
CASO NO. 1

Implementación Procesos Almacenados de Base de Datos

Una pequeña compañía desea tener sus colaboradores almacenados en una base de datos

en una tabla llamada colaboradores.

Los colaboradores pueden en algún momento estar (A= Activos, I=Inactivos ,

V=Vacaciones)

• Construir un procedimiento almacenado que permita la carga de los colaboradores

en la base de datos. El mismo debe ser invocado con los parámetros necesarios

para la carga.

Colaboradores ( id_colaborador number PK, nombre varchar2(25), aplellido

varchar2(25), cedula varchar2, salariomensual number(15,2), fechaingreso date,

status char).

• Construir un procedimiento almacenado que permita implementar un cursor sobre

la tabla de colaboradores para realizador el cálculo del salario quincenal de estos,

donde debe preliminarmente haber creado:

1. Una función que realice el cálculo del salario quincenal.

2. Una función que realice el cálculo del seguro educativo (1.25%).

3. Una función que realice el cálculo del seguro social (9.75%)

4. Una función que realice el cálculo del salario neto quincenal.

• Este procedimiento debe cargar la relación pagoquincenal durante el proceso.

Pagoquincena ( id_colaborador number pk salariobruto number(15,2), salarioneto

number(15,2), seguroeducativo number(15,2), segurosocial number(15,2), fechapago

date)

Nota: solo se le paga la quincena a los colaboradores que están activos.

Crear la tabla "colaboradores":


CREATE TABLE colaboradores (

id_colaborador NUMBER PRIMARY KEY,

nombre VARCHAR2(25),

apellido VARCHAR2(25),

cedula VARCHAR2(15),

salariomensual NUMBER(15,2),

fechaingreso DATE,

status CHAR(1)

);

Crear el procedimiento almacenado para cargar colaboradores en la tabla:

CREATE OR REPLACE PROCEDURE cargar_colaborador (

p_id_colaborador IN NUMBER,

p_nombre IN VARCHAR2,

p_apellido IN VARCHAR2,

p_cedula IN VARCHAR2,

p_salariomensual IN NUMBER,

p_fechaingreso IN DATE,

p_status IN CHAR

) AS

BEGIN

INSERT INTO colaboradores (

id_colaborador,

nombre,

apellido,

cedula,

salariomensual,
fechaingreso,

status

) VALUES (

p_id_colaborador,

p_nombre,

p_apellido,

p_cedula,

p_salariomensual,

p_fechaingreso,

p_status

);

COMMIT;

END;
/

Crear las funciones necesarias para el cálculo del salario quincenal, seguro educativo,
seguro social y salario neto quincenal:

CREATE OR REPLACE FUNCTION calcular_salario_quincenal (

p_salariomensual IN NUMBER

) RETURN NUMBER IS

salario_quincenal NUMBER(15,2);

BEGIN

salario_quincenal := p_salariomensual / 2; -- Se asume que una quincena es la mitad


del salario mensual

RETURN salario_quincenal;
END;

CREATE OR REPLACE FUNCTION calcular_seguro_educativo (

p_salario_quincenal IN NUMBER

) RETURN NUMBER IS

seguro_educativo NUMBER(15,2);

BEGIN

seguro_educativo := p_salario_quincenal * 0.0125; -- 1.25% del salario quincenal

RETURN seguro_educativo;

END;

CREATE OR REPLACE FUNCTION calcular_seguro_social (

p_salario_quincenal IN NUMBER

) RETURN NUMBER IS

seguro_social NUMBER(15,2);

BEGIN

seguro_social := p_salario_quincenal * 0.0975; -- 9.75% del salario quincenal

RETURN seguro_social;

END;

CREATE OR REPLACE FUNCTION calcular_salario_neto_15 (

p_salario_quincenal IN NUMBER,

p_seguro_educativo IN NUMBER,
p_seguro_social IN NUMBER

) RETURN NUMBER IS

salario_neto_quincenal NUMBER(15,2);

BEGIN

salario_neto_quincenal := p_salario_quincenal - p_seguro_educativo -


p_seguro_social;

RETURN salario_neto_quincenal;

END;

Crear el procedimiento almacenado que implemente el cálculo del salario quincenal y


cargue la tabla "pagoquincena":

CREATE OR REPLACE PROCEDURE calcular_cargar_pago_quincenal IS

CURSOR colaboradores_cursor IS

SELECT *

FROM colaboradores

WHERE status = 'A'; -- Solo colaboradores activos

colaborador colaboradores%ROWTYPE;

BEGIN

FOR colaborador IN colaboradores_cursor LOOP

DECLARE

salario_quincenal NUMBER(15,2);

seguro_educativo NUMBER(15,2);

seguro_social NUMBER(15,2);

salario_neto_quincenal NUMBER(15,2);

BEGIN
salario_quincenal := calcular_salario_quincenal([Link]);

seguro_educativo := calcular_seguro_educativo(salario_quincenal);

seguro_social := calcular_seguro_social(salario_quincenal);

salario_neto_quincenal := calcular_salario_neto_quincenal(salario_quincenal,
seguro_educativo, seguro_social);

INSERT INTO pagoquincena (id_colaborador, salariobruto, salarioneto,


seguroeducativo, segurosocial, fechapago)

VALUES (colaborador.id_colaborador, salario_quincenal, salario_neto_quincenal,


seguro_educativo, seguro_social, SYSDATE);

COMMIT;

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

RAISE;

END;

END LOOP;

END;

También podría gustarte