Вы находитесь на странице: 1из 6

SECCIÓN 01

Ciclo 2018-I
Escuela Profesional de Ingeniería de Sistemas e Informática
Examen
Final 0203-02410
BASE DE DATOS
Tipo C Nota en letras:

Docente: JURURO BODA ALEX MANUEL

Ciclo: 8 Módulo: 2 Sección: 01 UDED:

Alumno: Código:
ESTIMADO ESTUDIANTE, SE LE RECUERDA:
USO OBLIGATORIO DEL CORREO INSTITUCIONAL, PARA SU COMUNICACIÓN.
Si aún no cuenta con su clave, solicítelo a su coordinador.
 Presentar su Documento de Identidad a solicitud del evaluador.
 Resuelva el examen utilizando lapicero y con letra legible.
 Evite borrones y enmendaduras.
 Evite el plagio. De presentarse el caso se anulará el examen y la
calificación será cero (00).
INDICACIONES PARA  La redacción y ortografía serán tomadas en cuenta en la evaluación
EL ALUMNO:  Al finalizar el examen debe asegurarse de FIRMAR EL ACTA DE
EVALUACIÓN.
 Queda prohibido el uso de dispositivos móviles durante el tiempo fijado
para el examen escrito, el incumplimiento ocasiona la ANULACION DEL
EXAMEN.
¡Éxitos!

Preguntas:

1. Grafique el modelo físico de un Sistema de Mantenimiento de pañales de bebé, incluya la


ventana de ingreso de login y clave y auditoría. Considerar nomenclatura de objetos,
incluir auditoría y log de errores. Considerar un máximo de 7 entidades y 4 atributos por
cada entidad. (3 puntos)

2. Para los objetos creados en el punto 1 de su Sistema de pañales de bebé, cree stored
procedures dentro un package, los cuales realicen lo siguiente (usar nomenclatura de
objetos):
2.1. Realice una búsqueda de Items y los muestre a través de 4 filtros / parametros de
búsqueda que tengan en la tabla tipos de datos diferentes (tipos de dato: entero, decimal,
string y fecha). (3 puntos)

UAP-DUED20181
SECCIÓN 01

CABECERA

CREATE OR REPLACE PACKAGE PK_MANT_PAÑALES IS


TYPE CUR_DATO IS REF CURSOR;
PROCEDURE SP_BUSCA_PAÑALES
(
PO_CURSOR IN OUT CUR_DATO,
PI_TALLA VARCHAR2,
PI_FECFAB VARCHAR2,
PI_TIPO_PAÑAL VARCHAR2
);
PROCEDURE SP_INS_PAÑALES
(
PO_VRETORNO OUT VARCHAR2,
PI_PAÑ_ID NUMBER,
PI_NRSERIE VARCHAR2,
PI_FECFAB VARCHAR2,
PI_TIPO_PAÑAL NUMBER
);
PROCEDURE SP_ACT_PAÑAL
(
PO_VRETORNO OUT VARCHAR2,
PI_PAÑ_ID NUMBER,
PI_TIPO_PAÑ_ID NUMBER,
PI_NRSERIE VARCHAR2,
PI_FECFAB VARCHAR2,
PI_PRECIO NUMBER
);

PROCEDURE SP_INS_COLOR
(
PO_VRETORNO OUT VARCHAR2,
PI_COL_DESCRIP VARCHAR2
);
END PK_MANT_PAÑALES;

CUERPO
CREATE OR REPLACE PACKAGE BODY PK_MANT_PAÑALES IS
PROCEDURE SP_BUSCA_PAÑALES
(
PO_CURSOR IN OUT CUR_DATO,
PI_TALLA VARCHAR2,
PI_FECFAB VARCHAR2,
PI_TIP_PAÑ VARCHAR2
)
IS

BEGIN

UAP-DUED20181
SECCIÓN 01
OPEN PO_CURSOR FOR
SELECT
PA.PAÑAL_ID,
CO.COMP_TALLA,
TO_CHAR(PA.PAÑAL_FECFAB,'DD-MM-YYYY') PAÑAL_FECFAB,
PA.PAÑAL_PRECIO
FROM JUNIORS2009141401.SMP_PAÑALES PA
WHERE PA.PAÑAL_TALLA LIKE '%'|| PI_TALLA ||'%'
AND (
(PI_FECFAB IS NULL)
OR
(PI_FECFAB IS NOT NULL AND PI_FECFAB =
TO_CHAR(CO.COMP_FECFAB,'DD/MM/YYYY') )
)
AND (
(PI_TIPO_PAÑAL IS NULL)
OR
(PI_TIPO_PAÑAL IS NOT NULL AND PI_TIP_PAÑ = TO_CHAR(PA.TIP_PAÑ))
);

END;

PROCEDURE SP_INS_PAÑALES
(
PO_VRETORNO OUT VARCHAR2,
PI_PAÑ_ID NUMBER,
PI_MANT_PAÑ VARCHAR2,
PI_NRSERIE VARCHAR2,
PI_FECFAB VARCHAR2,
PI_TIPO_PAÑ NUMBER
)
IS
VN_CONTADOR NUMBER;
BEGIN

SELECT COUNT(SMP_PAÑALES.COMP_ID) INTO VN_CONTADOR FROM SMP_PAÑALES


WHERE COMP_NRSERIE = PI_NRSERIE;
IF VN_CONTADOR > 0 THEN
PO_VRETORNO := 'El nro. de serie ingresado ya existe.';
RETURN;
END IF;

INSERT INTO JUNIORS2009141401.SMP_PAÑALES


(PAÑ_ID,TIP_PAÑ,COMP_NRSERIE,PAÑ_FECFAB,TIP_MANT)
VALUES
(SQ_PAÑAL.NEXTVAL,PI_TIP_PAÑ,PI_NRSERIE,TO_DATE(PI_FECFAB,'DD/MM/YYYY'),
PI_MANT_PAÑ);
COMMIT;
PO_VRETORNO := 'El registro se actualizó con éxito.';

EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
PO_VRETORNO := SUBSTR(SQLERRM, 11);

END;

PROCEDURE SP_ACT_COMPUTADORAS
(
PO_VRETORNO OUT VARCHAR2,
PI_PAÑ_ID NUMBER,
PI_MAR_ID NUMBER,

UAP-DUED20181
SECCIÓN 01
PI_NRSERIE VARCHAR2,
PI_FECFAB VARCHAR2,
PI_TIP_PAÑ NUMBER
)
IS
VN_CONTADOR NUMBER;
--VV_RETORNO VARCHAR2(100);
BEGIN

SELECT COUNT(SMP_PAÑALES.PAÑ_ID) INTO VN_CONTADOR FROM SMP_PAÑALES


WHERE COMP_NRSERIE = PI_NRSERIE;
IF VN_CONTADOR > 0 THEN
PO_VRETORNO := 'El nro. de serie ingresado ya existe.';
RETURN;
END IF;

UPDATE JUNIORS2009141401.SMP_PAÑALES PA
SET CO.MAR_ID = PI_MAR_ID,
PA.PAÑ_NRSERIE = PI_NRSERIE,
PA.PAÑ_FECFAB = TO_DATE(PI_FECFAB,'DD/MM/YYYY'),
PA.PAÑ_TIP_PAÑ = PI_TIP_PAÑ
WHERE PA.PAÑ_ID = PI_PAÑ_ID;
PO_VRETORNO := 1;
COMMIT;

EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
PO_VRETORNO := SUBSTR(SQLERRM, 11);

END;

PROCEDURE SP_INS_COLOR
(
PO_VRETORNO OUT VARCHAR2,
PI_COL_DESCRIP VARCHAR2
)
IS
BEGIN

INSERT INTO JUNIORS2009141401.SMP_COLOR


(COL_ID,COL_DESCRIP,COL_FLAG_ACT)
VALUES
(NULL,PI_COL_DESCRIP,1);
COMMIT;
PO_VRETORNO := 'El registro se insertó con éxito.';

EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
PO_VRETORNO := SUBSTR(SQLERRM, 11);

END;
END PK_MANT_PAÑALES;

2.2. Realice una inserción de Items considerando a través de 4 parametros de inserción


que tengan en la tabla tipos de datos diferentes (tipos de dato: entero, decimal, string y
fecha) (3 puntos)

UAP-DUED20181
SECCIÓN 01
2.4. Cree un stored procedure que reciba un parámetro del tipo cadena ‘abc|def|ghi …’ e
inserte cada valor en una fila diferente de la tabla ítems usar comandos FOR .. IN … END
… LOOP (2 puntos)

CREATE OR REPLACE PACKAGE BODY PK_GENERAL_PAÑALES


IS

PROCEDURE SP_INS_PAÑALES_MASIVA
(
PO_VRETORNO OUT VARCHAR2,
PI_CAD_MARCA VARCHAR2
)
IS
VN_CONTADOR NUMBER;
BEGIN

FOR REC IN (SELECT REGEXP_SUBSTR('PAMPER|HUGGIES|BABYSEC|PEQUEÑITOS',


'[^|]+', 1, LEVEL) IDMAR
FROM DUAL
CONNECT BY REGEXP_SUBSTR('PAMPER|HUGGIES|BABYSEC|PEQUEÑITOS', '[^|]+', 1,
LEVEL) IS NOT NULL)

LOOP
SELECT NVL(MAX(PAÑALES.PAÑ_ID),0)+1 INTO VN_CONTADOR FROM
JUNIORS2009141401.SMP_PAÑALES PAÑALES;
INSERT INTO JUNIORS2009141401.SMP_PAÑALES
(PAÑ_ID, MAR_ID, PAÑ_NRSERIE, MAR_FLAG_ACT)
VALUES
(VN_CONTADOR,REC.IDMAR,'','1');
END LOOP;

COMMIT;
PO_VRETORNO := 'Los registros se insertaron con éxito.';

EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
PO_VRETORNO := SUBSTR(SQLERRM, 11);

END;

END PK_GENERAL_PAÑALES;

2.5. Cree un stored procedure que realice una consulta de registros (SELECT) incluyendo
los comandos INNER JOIN y LEFT JOIN a 3 trablas más. (2 puntos)
2.6. Cree dos índices, para un solo campo y para 3 campos de una de las tablas de su
Sistema. Haga dos scripts de ejemplo usando cada una forma diferente del uso de los
HINTS (2 puntos)

BASE 1

CREATE DIRECTORY juniorsF AS '.../datapumpjuniors';


GRANT EXP_FULL_DATABASE to system;
GRANT READ, WRITE ON DIRECTORY juniors to system;

UAP-DUED20181
SECCIÓN 01

BASE 2

CREATE DIRECTORY EXAMEN_FINAL AS '.../datapumpjuniors';


GRANT EXP_FULL_DATABASE to system;
GRANT READ, WRITE ON DIRECTORY juniors to system;

2.7. Escriba la línea de comandos de importación de una base de datos creada usando
los comandos impdp (2 puntos)

expdp esquema/usuario@password tables=ACCESS$ directory=dp dumpfile=ACCESS$.dmp


logfile=expdTABLA_ACCESO.log

UAP-DUED20181

Вам также может понравиться