/*prueba empleado*/
CREATE OR REPLACE
PACKAGE pruebas_empleado AS
PROCEDURE inicializar;
PROCEDURE insertar (prueba_insertar_empleado IN VARCHAR,
wPuesto IN puestos.oid_pue%TYPE,
wNombre IN empleados.nombre%TYPE,
wApellidos IN empleados.apellidos%TYPE,
wSexo IN empleados.sexo%TYPE,
wNIF IN empleados.nif%TYPE,
wFNac IN empleados.fnac%TYPE,
wSalario IN empleados.salario%TYPE,
wFInicioContrato IN empleados.finiciocontrato%TYPE,
wFFinContrato IN empleados.ffincontrato%TYPE,
w_Cuota IN clientes.cuota%TYPE,
salidaEsperada IN BOOLEAN);
PROCEDURE eliminar (prueba_eliminar_empleado IN VARCHAR,
wPuesto IN puestos.oid_pue%TYPE,
wNombre IN empleados.nombre%TYPE,
wApellidos IN empleados.apellidos%TYPE,
wSexo IN empleados.sexo%TYPE,
wNIF IN empleados.nif%TYPE,
wFNac IN empleados.fnac%TYPE,
wSalario IN empleados.salario%TYPE,
wFInicioContrato IN empleados.finiciocontrato%TYPE,
wFFinContrato IN empleados.ffincontrato%TYPE,
salidaEsperada BOOLEAN);
PROCEDURE actualizar (prueba_actualizar_empleado IN VARCHAR,
wPuesto IN puestos.oid_pue%TYPE,
wNombre IN empleados.nombre%TYPE,
wApellidos IN empleados.apellidos%TYPE,
wSexo IN empleados.sexo%TYPE,
wNIF IN empleados.nif%TYPE,
wFNac IN empleados.fnac%TYPE,
wSalario IN empleados.salario%TYPE,
wFInicioContrato IN empleados.finiciocontrato%TYPE,
wFFinContrato IN empleados.ffincontrato%TYPE,
salidaEsperada BOOLEAN);
END pruebas_empleado;
/
------- HASTA AQUI TODO SALE BIEN Y NO DA ERROR ----------
CREATE OR REPLACE
PACKAGE BODY pruebas_empleado AS
/*inicializacion*/
PROCEDURE inicializar AS
BEGIN
DELETE FROM EMPLEADOS;
END inicializar;
/*insertar*/
PROCEDURE insertar (
prueba_insertar_empleado VARCHAR,
wPuesto IN puestos.oid_pue%TYPE,
wNombre IN empleados.nombre%TYPE,
wApellidos IN empleados.apellidos%TYPE,
wSexo IN empleados.sexo%TYPE,
wNIF IN empleados.nif%TYPE,
wFNac IN empleados.fnac%TYPE,
wSalario IN empleados.salario%TYPE,
wFInicioContrato IN empleados.finiciocontrato%TYPE,
wFFinContrato IN empleados.ffincontrato%TYPE,
salidaEsperada BOOLEAN
) IS
salida BOOLEAN := TRUE;
num PLS_INTEGER;
BEGIN
num := 0;
/*insertar empleado*/
CREAR_EMPLEADO(wPuesto,wNombre,wApellidos,wSexo,wNIF,wFNac,wSalario,wFInicioContrato);
/*seleccionar empleado para ver si se ha insertado correctamente*/
SELECT COUNT(*) INTO num FROM EMPLEADOS WHERE NIF=wNIF;
IF (num < 1) THEN
salida := FALSE;
END IF;
COMMIT WORK;
DBMS_OUTPUT.put_line (prueba_insertar_empleado || ':' || ASSERT_EQUALS(salida, salidaEsperada));
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(prueba_insertar_empleado || ':' || ASSERT_EQUALS(FALSE, salidaEsperada));
ROLLBACK;
END insertar;
/*actualizar*/
PROCEDURE actualizar ( prueba_actualizar_empleado VARCHAR,
wPuesto IN puestos.oid_pue%TYPE,
wNombre IN empleados.nombre%TYPE,
wApellidos IN empleados.apellidos%TYPE,
wSexo IN empleados.sexo%TYPE,
wNIF IN empleados.nif%TYPE,
wFNac IN empleados.fnac%TYPE,
wSalario IN empleados.salario%TYPE,
wFInicioContrato IN empleados.finiciocontrato%TYPE,
wFFinContrato IN empleados.ffincontrato%TYPE,
salidaEsperada BOOLEAN) IS
num PLS_INTEGER;
salida BOOLEAN := TRUE;
EMPLEADOS_row EMPLEADOS%ROWTYPE;
BEGIN
num := 0;
/*Actualizar cliente*/
UPDATE EMPLEADOS SET FFinContrato = wFFinContrato WHERE NIF=wnif;
SELECT * INTO EMPLEADOS_row FROM EMPLEADOS WHERE NIF=wnif;
IF (EMPLEADOS_row.FFinContrato<> wFFinContrato) THEN
salida := FALSE;
END IF;
COMMIT WORK;
DBMS_OUTPUT.put_line(prueba_actualizar_empleado || ':' || ASSERT_EQUALS (salida, salidaEsperada));
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(prueba_actualizar_empleado || ':' || ASSERT_EQUALS (FALSE, salidaEsperada));
ROLLBACK;
END actualizar;
/*eliminar*/
PROCEDURE eliminar ( prueba_eliminar_empleado VARCHAR,
wPuesto IN puestos.oid_pue%TYPE,
wNombre IN empleados.nombre%TYPE,
wApellidos IN empleados.apellidos%TYPE,
wSexo IN empleados.sexo%TYPE,
wNIF IN empleados.nif%TYPE,
wFNac IN empleados.fnac%TYPE,
wSalario IN empleados.salario%TYPE,
wFInicioContrato IN empleados.finiciocontrato%TYPE,
wFFinContrato IN empleados.ffincontrato%TYPE,
salidaEsperada BOOLEAN) IS
salida BOOLEAN := FALSE;
num PLS_INTEGER;
BEGIN
num := 0;
/*eliminar empleado*/
DELETE FROM EMPLEADOS WHERE NIF=wNIF;
SELECT COUNT (*) INTO num FROM EMPLEADOS WHERE NIF=wNIF;
IF (num < 1) THEN
salida := FALSE;
ELSE
salida := TRUE;
END IF;
COMMIT WORK;
DBMS_OUTPUT.put_line (prueba_eliminar_empleado || ':' || ASSERT_EQUALS (salida, salidaEsperada));
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line (prueba_eliminar_empleado || ':' || ASSERT_EQUALS (FALSE, salidaEsperada));
ROLLBACK;
END eliminar;
END;
/
/*funcion auxiliar ASSERT_EQUALS*/
CREATE OR REPLACE
FUNCTION ASSERT_EQUALS (salida BOOLEAN, salidaEsperada BOOLEAN) RETURN varchar2 AS
BEGIN
IF (salida=salidaEsperada) THEN
RETURN 'exito';
ELSE
RETURN 'fallo';
END IF;
END ASSERT_EQUALS;