1. El atributo atributo que permite permite conocer conocer el tipo tipo de una una variable, variable, constante constante o campo campo de la la base de datos: A. %TYPE B. %ROWTYPE C. & D. %COLUMN 2. Los bloques bloques PL/SQL PL/SQL presentan presentan una estructura estructura específica compuesta de tres tres partes partes bien diferenciadas: A. Sección Declarativa, de Ejecución, y de Excepciones B. Sección Inicio(BEGIN), Procedural y Fin(END). C. Sección de Librerias, Declarativa y de Ejecución. D. N.A. 3. Es incorre incorrecto cto afirma afirma con con respecto respecto al al concepto concepto de PROCE PROCEDIMIE DIMIENTO: NTO: A. El uso de OR REPLACE permite sobreescribir un procedimiento existente B. La sintaxis es muy parecida a la de un bloque anónimo, se usa la palabra reservada PROCEDURE ... IS en la especificación del procedimiento C. Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT) D. Subprograma que devuelve un valor. E. Todas las anteriores. 4. Excepción que se disparan disparan automáticamente automáticamente al producirse producirse error error de de lectura lectura de registros: A. too_many_rows B. no_data_founded: C. too_many_data D. login_failed E. N.A. 5. Un trigger trigger es un bloqu bloque e PL/SQL PL/SQL asociado asociado a una tabla, tabla, que que se ejecuta ejecuta como consecuencia de una determinada instrucción SQL. Cuál de las instrucciones instruccio nes enumeradas no corresponde para el uso de Trigger. A. INSERT B. UPDATE C. DELETE D. DROP E. N.A.
6. Es un área compartida compartida por todos todos los procesos de servidor servidor y procesos de segundo segundo plano. A. SGA B. PGA C. Instance D. SMON E. PMON
7. Una base base de datos se divide en en unidades unidades lógicas lógicas de almacenamiento almacenamiento denomina denominadas: das: A. ControlFiles B. Tablespaces C. Segmentos D. Extensiones E. DataFiles
8. Por ello ello dado que normalme normalmente nte las consulta pueden devolver varias filas estas se suelen manejar mejor haciendo uso del concepto : A. Expcetion B. Procedimiento C. Función D. Cursores E. N .A 9. El código código contenid contenido o en un un dispara disparador dor,, denomin denominado ado cuerpo del disparador , está formado por bloques A. Función B. Cursor C. PL/SQL D. Procedimiento E. N.A 10. Se crea cuando cuando la instancia es levantada levantada (startup) (startup) y se borra cuando cuando ésta se deja de usar (shutdown), indicar el área de memoria : A. SGA B. PGA C. JGA D. GSA E. N.A
Se tiene las siguiente tablas: ALUMNOS
CURSOS
CodigoAlum CodigoAlumno no Texto Nombre Texto Apellidos Texto
CodigoCurso CodigoCurso Texto Curso Texto
NOTAS
Codi Codigo goAl Alum umno no CodigoCurso NotaParcial NotaPracticas NotaFinal Prom Promed edio ioFi Fina nall
Text Texto o Tex Texto Numerico Numerico Numerico Nume Numeri rico co
1. Crear un un cursor que muestre muestre la relación relación de de cursos y notas obtenidas obtenidas por curso curso (Código (Código alumno, alumno, Nombre, Nombre, Apellidos, Apellidos, Curso, Curso, Nota Parcial, Practicas, Practicas, Nota Final Final y Promedio Promedio Final) Final).. Ingre Ingresar sar como como pará paráme metro tro el código código del del alum alumno no.. En caso caso de no enco encontr ntrar ar registros, indicar que el alumno no existe.
DECLARE CURSOR c_cursos(cod_alumno IN varchar2) IS SELECT a.codigoalumno, a.nombre, a.apellidos, c.curso, n.notaparcial, n.notapracticas, n.notafinal, n.promediofinal FROM alumnos a inner join notas n on a.codigoalumno = n.codigoalumno inner join cursos c on c.codigocurso = n.codigocurso where a.codigoalumno = cod_alumno; ccurs_registro c_cursos%ROWTYPE; BEGIN DBMS_OUTPUT.PUT_LINE('Relación de cursos con notas ' || ccurs_registro.curso); FOR ccurs_registro IN c_cursos(&cod_alumno) LOOP DBMS_OUTPUT.PUT_LINE DBMS_OUTPUT.PU T_LINE (ccurs_registro.codi (ccurs_registro.codigoalumno goalumno || ' ' || ccurs_registro.nombre ccurs_registro.no mbre || ' ' || ccurs_registro.curso ccurs_registro.curs o || ' ' || ccurs_registro.notaparcial ccurs_registro.no taparcial || ' ' || ccurs_registro.notafinal ccurs_registro.no tafinal || ' ' || ccurs_registro.promediofinal); END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('El alumno no existe'); END;
2. Se tiene 3 tablas tablas (Persona, (Persona, Masculino, Masculino, Femenino) Femenino) con la misma estructura estructura siguiente : DNI char(8) Nombre char(20) Sexo char(1) ( F femenino o Masculino ) Edad Number(2) Realizar un trigger de tal manera que al insertar si es masculino se guarda en la tabla masculino caso contrario se guarda en la tabla femenino. Poner una excepción al
trigger que no permita grabar grabar aquellos que tengan edad edad mayores de de 60 años. CREATE OR REPLACE TRIGGER COPIA_GENERO BEFORE INSERT ON PERSONA FOR EACH ROW BEGIN IF (INSERTING AND :new.edad>=60) THEN RAISE_APPLICATION_ERROR( RAISE_APPLICATION _ERROR(-20001 -20001,'Err. ,'Err. Ingreso no permitido'); ELSIF (INSERTING AND :new.sexo='f') THEN INSERT INTO FEMENINO VALUES(:new.dni,:new.nombre, :new.sexo, :new.edad); ELSIF (INSERTING AND :new.sexo='m') THEN INSERT
INTO
MASCULINO
VALUES(:new.dni,:new.nombre, :new.sexo, :new.edad); END IF; END;