Al ejecutar el siguiente paquete de prueba (compila correctamente) con los siguientes datos la prueba resulta errónea y no se insertan los datos.`/————————— Usuarios—————————/
CREATE OR REPLACE PACKAGE PRUEBAS_USUARIOS AS PROCEDURE INICIALIZAR; PROCEDURE INSERTAR (NOMBREPRUEBA VARCHAR2,W_NOMBRE VARCHAR2,W_APELLIDOS VARCHAR2, W_FOTO VARCHAR2,W_EDAD CHAR, W_TELEFONO CHAR,W_DNI_USUARIO CHAR, W_FECHANACIMIENTO DATE,W_LUGARNACIMIENTO VARCHAR2,W_DOMICILIOFAMILIAR VARCHAR2,W_DNI_MONITOR CHAR, SALIDAESPERADA BOOLEAN); PROCEDURE ACTUALIZAR (NOMBREPRUEBA VARCHAR2,W_NOMBRE VARCHAR2,W_APELLIDOS VARCHAR2, W_FOTO VARCHAR2,W_EDAD CHAR, W_TELEFONO CHAR,W_DNI_USUARIO CHAR, W_FECHANACIMIENTO DATE,W_LUGARNACIMIENTO VARCHAR2,W_DOMICILIOFAMILIAR VARCHAR2,W_DNI_MONITOR CHAR, SALIDAESPERADA BOOLEAN); PROCEDURE ELIMINAR (NOMBREPRUEBA VARCHAR2, W_DNI_USUARIO CHAR, SALIDAESPERADA BOOLEAN); END PRUEBAS_USUARIOS; / CREATE OR REPLACE PACKAGE BODY PRUEBAS_USUARIOS AS FUNCTION ASSERT_EQUALS( SALIDA BOOLEAN, SALIDAESPERADA BOOLEAN) RETURN VARCHAR2 AS BEGIN IF(SALIDA = SALIDAESPERADA) THEN RETURN 'EXITO EN LA PRUEBA'; ELSE RETURN 'FALLO EN LA PRUEBA'; END IF; END ASSERT_EQUALS; PROCEDURE INICIALIZAR AS BEGIN DELETE FROM USUARIOS; COMMIT WORK; END INICIALIZAR; PROCEDURE INSERTAR (NOMBREPRUEBA VARCHAR2,W_NOMBRE VARCHAR2,W_APELLIDOS VARCHAR2, W_FOTO VARCHAR2,W_EDAD CHAR, W_TELEFONO CHAR,W_DNI_USUARIO CHAR, W_FECHANACIMIENTO DATE,W_LUGARNACIMIENTO VARCHAR2,W_DOMICILIOFAMILIAR VARCHAR2,W_DNI_MONITOR CHAR, SALIDAESPERADA BOOLEAN) AS SALIDA BOOLEAN :=TRUE; USUARIO USUARIOS%ROWTYPE; BEGIN /*INSERTAR USUARIO*/ INSERT INTO USUARIOS VALUES (W_NOMBRE ,W_APELLIDOS, W_FOTO,W_EDAD, W_TELEFONO,W_DNI_USUARIO, W_FECHANACIMIENTO,W_LUGARNACIMIENTO,W_DOMICILIOFAMILIAR,W_DNI_MONITOR); /*SELECCIONAR USUARIO Y COMPROBAR QUE LOS DATOS SE HAN INTRODUCIDO CORRECTAMENTE*/ SELECT NOMBRE ,APELLIDOS ,FOTO ,EDAD ,TELEFONO ,DNI_USUARIO ,FECHANACIMIENTO ,LUGARNACIMIENTO ,DOMICILIOFAMILIAR ,DNI_MONITOR INTO USUARIO FROM USUARIOS WHERE DNI_USUARIO = W_DNI_USUARIO; IF(USUARIO.NOMBRE<>W_NOMBRE OR USUARIO.APELLIDOS<>W_APELLIDOS OR USUARIO.FOTO<>W_FOTO OR USUARIO.EDAD<>W_EDAD OR USUARIO.TELEFONO<>W_TELEFONO OR USUARIO.FECHANACIMIENTO<>W_FECHANACIMIENTO OR USUARIO.LUGARNACIMIENTO<>W_LUGARNACIMIENTO OR USUARIO.DOMICILIOFAMILIAR<>W_DOMICILIOFAMILIAR OR USUARIO.DNI_MONITOR<>W_DNI_MONITOR) THEN SALIDA :=FALSE; END IF; COMMIT WORK; /*MOSTRANDO EL RESULTADO DE LA PRUEBA*/ DBMS_OUTPUT.PUT_LINE(NOMBREPRUEBA || ':' || ASSERT_EQUALS(SALIDA, SALIDAESPERADA)); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(NOMBREPRUEBA || ':' || ASSERT_EQUALS(FALSE, SALIDAESPERADA)); ROLLBACK; END INSERTAR; PROCEDURE ACTUALIZAR (NOMBREPRUEBA VARCHAR2,W_NOMBRE VARCHAR2,W_APELLIDOS VARCHAR2, W_FOTO VARCHAR2, W_EDAD CHAR, W_TELEFONO CHAR,W_DNI_USUARIO CHAR, W_FECHANACIMIENTO DATE,W_LUGARNACIMIENTO VARCHAR2,W_DOMICILIOFAMILIAR VARCHAR2,W_DNI_MONITOR CHAR, SALIDAESPERADA BOOLEAN) AS SALIDA BOOLEAN :=TRUE; USUARIO USUARIOS%ROWTYPE; BEGIN /*ACTUALIZAR USUARIO */ UPDATE USUARIOS SET NOMBRE = W_NOMBRE, APELLIDOS = W_APELLIDOS, FOTO= W_FOTO,EDAD=W_EDAD, TELEFONO= W_TELEFONO, FECHANACIMIENTO= W_FECHANACIMIENTO,LUGARNACIMIENTO=W_LUGARNACIMIENTO,DOMICILIOFAMILIAR=W_DOMICILIOFAMILIAR,DNI_MONITOR=W_DNI_MONITOR WHERE DNI_USUARIO= W_DNI_USUARIO; SELECT * INTO USUARIO FROM USUARIOS WHERE DNI_USUARIO = W_DNI_USUARIO; IF(USUARIO.NOMBRE<>W_NOMBRE OR USUARIO.APELLIDOS<>W_APELLIDOS OR USUARIO.FOTO<>W_FOTO OR USUARIO.EDAD<>W_EDAD OR USUARIO.TELEFONO<>W_TELEFONO OR USUARIO.FECHANACIMIENTO<>W_FECHANACIMIENTO OR USUARIO.LUGARNACIMIENTO<>W_LUGARNACIMIENTO OR USUARIO.DOMICILIOFAMILIAR<>W_DOMICILIOFAMILIAR OR USUARIO.DNI_MONITOR<>W_DNI_MONITOR) THEN SALIDA :=FALSE; END IF; COMMIT WORK; /*MOSTRANDO EL RESULTADO DE LA PRUEBA*/ DBMS_OUTPUT.PUT_LINE(NOMBREPRUEBA || ':' || ASSERT_EQUALS(SALIDA, SALIDAESPERADA)); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(NOMBREPRUEBA || ':' || ASSERT_EQUALS(FALSE, SALIDAESPERADA)); ROLLBACK; END ACTUALIZAR; PROCEDURE ELIMINAR(NOMBREPRUEBA VARCHAR2, W_DNI_USUARIO CHAR, SALIDAESPERADA BOOLEAN) AS SALIDA BOOLEAN := TRUE; CONTADORUSUARIOS INTEGER; BEGIN /*ELIMINAR USUARIOS*/ DELETE FROM USUARIOS WHERE DNI_USUARIO= W_DNI_USUARIO; /*COMPROBAR QUE USUARIOS NO EST� EN LA BBDD*/ SELECT COUNT(*) INTO CONTADORUSUARIOS FROM USUARIOS WHERE DNI_USUARIO = W_DNI_USUARIO; IF(CONTADORUSUARIOS<>0)THEN SALIDA:=FALSE; END IF; COMMIT WORK; /*MOSTRAR EL RESULTADO DE LA PRUEBA*/ DBMS_OUTPUT.PUT_LINE(NOMBREPRUEBA || ':' || ASSERT_EQUALS(SALIDA, SALIDAESPERADA)); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(NOMBREPRUEBA || ':' || ASSERT_EQUALS(FALSE, SALIDAESPERADA)); ROLLBACK; END ELIMINAR; END PRUEBAS_USUARIOS; /` Este es el test SET SERVEROUTPUT ON; BEGIN PRUEBAS_USUARIOS.INICIALIZAR; PRUEBAS_USUARIOS.INSERTAR('ProbaNdo a iNsertar el usuario','Tomás', 'HerNáNdez Muñoz','foto1.jpg', '27', '677110368','76831946L',to_date('04/01/91','DD/MM/RR'),'Málaga','Calle Milagros Nº3','58596366L',TRUE); PRUEBAS_USUARIOS.INSERTAR('ProbaNdo a iNsertar el usuario','JoaquíN', 'FerNáNdez Muñoz','foto2.jpg', '24', '683610871','44565266K',to_date('10/01/94','DD/MM/RR'),'Sevilla','Calle SaN Pedro Nº25','36180946K',TRUE); PRUEBAS_USUARIOS.ACTUALIZAR('ProbaNdo a actualizar el usuario','JoaquíN', 'FerNáNdez Rodríguez','foto2.jpg', '24', '683610871','44565266K',to_date('10/01/94','DD/MM/RR'),'Sevilla','Calle SaN JuliáN Nº25','36180946K',TRUE); PRUEBAS_USUARIOS.ELIMINAR('ProbaNdo a elimiNar el usuario','44565266K',TRUE); END; /