PAC BBDD B UF3 DAM
|
|
Título del Test:
![]() PAC BBDD B UF3 DAM Descripción: PAC RECUPERACION |



| Comentarios |
|---|
NO HAY REGISTROS |
|
En un sistema de gestión de ventas, tienes las tablas ventas y vendedores. Implementaste un trigger que automáticamente calcula y actualiza el total de ventas de un vendedor en la tabla vendedores cada vez que se registra una nueva venta en la tabla ventas. Para hacer esto, el trigger se activa después de cada inserción en la tabla ventas y suma todos los montos de las ventas del vendedor correspondiente en la tabla ventas, actualizando el total en la tabla vendedores. Dado este escenario y el trigger, CREATE OR REPLACE TRIGGER trg_recalcular_ventas AFTER INSERT ON ventas FOR EACH ROW DECLARE v_total DECIMAL(10, 2); BEGIN SELECT SUM(monto) INTO v_total FROM ventas WHERE vendedor_id = :NEW.vendedor_id; UPDATE vendedores SET total_ventas = v_total WHERE vendedor_id = :NEW.vendedor_id; END; / ¿es cierto que este enfoque es el más eficiente para mantener actualizado el total de ventas de cada vendedor?. Verdadero. Falso. Los cursores implícitos necesitan ser declarados antes de ser utilizados. verdadero. falso. Los roles en la administración de bases de datos solo pueden contener un tipo de permiso. verdadero. falso. Los bloques anónimos en PL/SQL son fragmentos de código que se almacenan en la estructura de la BD y para ejecutarlo solo es necesario introducirlos en la consola como si se tratase de SQL. verdadero. falso. En la especificación de un procedimiento o función (antes de poner IS o AS) se definen las variables locales a utilizar en el cuerpo del subprograma. verdadero. falso. Si estás ejecutando código en la consola o SQL Developer y deseas que un bloque de código se ejecute, debes incluir el símbolo "/" al final de ese bloque. Sin el "/", la consola o SQL Developer esperará mas líneas de código antes de ejecutar nada. Verdadero. Falso. Relaciona cada concepto con su definición de valores entrada/salida. Es una forma de pasar valores a un subprograma (como una función o procedimiento) en PL/SQL. Cuando un subprograma se ejecuta con éxito, puede devolver valores al proceso que lo llamó utilizando este tipo de variables. Puedes pasar un valor al subprograma como dato de entrada, y el subprograma también puede modificar ese valor y devolverlo como dato de salida. En PL/SQL, la modularidad se logra dividiendo un problema complejo en problemas mas simples mediante el uso de procedimientos y funciones. Verdadero. Falso. Siempre se debe declarar una excepción no_predefinida antes de usarla. Verdadero. Falso. La administración de usuarios en BBDD nunca requiere el uso de contraseñas para las conexiones. Verdadero. Falso. ¿Qué se utiliza en la declaración de un procedimiento o función para indicar que un parámetro es de entrada y no se modificará en el procedimiento. IN. IN OUT. IS. OUT. ¿Cuáles de las siguientes acciones pueden ser realizadas por un usuario con privilegios de solo lectura en una base de datos?. Puede acceder a datos de las vistas. Realizar consultas SELECT en las tablas. Realizar copias de seguridad de la base de datos. Otorgar privilegios a otros usuarios. Crear nuevas tablas en la BBDD. Eliminar registros de las tablas existentes. ¿Cuál de las siguientes estructuras de control se utiliza en condicionales, para ejecutar un conjunto de instrucciones dependiendo de si se cumple una condición?. Estructura WHILE. Estructura repetitiva básica. Sentencia CASE. Todas las anteriores. ¿Cuál de las siguientes acciones es responsabilidad de la administración de usuarios en una base de datos SQL?. Establecer políticas de seguridad. Desarrollar aplicaciones web. Optimizar consultas SQL. Definir la estructura de la base de datos. Que instrucción se ha de ejecutar al inicio para poder operar con usuarios, roles, privilegios y permisos sin problemas. alter session set "_ORACLE_SCRIPT"=true;. alter session oralce get "_ORACLE_SCRIPT"=true;. alter oracle session set "_ORACLE_SCRIPT"=true;. alter session set "_ORACLE_SCRIPT"=false;. Los privilegios en una base de datos nos pueden permitir. Acceder a un objeto de otro usuario. Ejecutar un tipo de sentencia SQL. Ejecutar distintos procedimientos. Todas son correctas. Estás desarrollando un sistema de gestión de inventario y decides usar un trigger para mantener un registro de las veces que un producto ha sido actualizado en la base de datos y poder rastrear las actualizaciones de productos. ¿Cuál de las siguientes opciones sería la mejor manera de implementar este trigger?. Crear un trigger BEFORE UPDATE que almacene una copia del producto en una tabla de historial antes de que se realice cualquier cambio. Crear un trigger AFTER INSERT que incremente un contador cada vez que se añade un nuevo producto. Crear un trigger AFTER UPDATE que incremente un contador cada vez que un producto es actualizado. Crear un trigger BEFORE DELETE que almacene una copia del producto en una tabla de historial antes de eliminarlo. ¿Cuál de las siguientes afirmaciones sobre los roles en una base de datos es cierta?. Los roles son conjuntos de privilegios que se pueden asignar a usuarios. Los roles permiten asignar permisos a nivel de columna. Los roles son exclusivos de MySQL y no se utilizan en Oracle. Los roles simplifican la administración de usuarios, pero no pueden contener privilegios. En un sistema de gestión de cuentas de usuario, una cuenta está en el estado "EXPIRED GRACE". El administrador del sistema ha otorgado un periodo de gracia de 7 días. Si el usuario no cambia su contraseña durante este periodo, ¿En qué estado se encontrará la cuenta después de esos 7 días?. EXPIRED (expirada). OPEN (abierta). LOCKED (bloqueada). EXPIRED & LOCKED (Expirada y bloqueada). ¿Cuál de las siguientes partes es requerida como obligatoria en un bloque de PL/SQL?. Parte ejecutable. Todas las anteriores. Parte de tratamiento de excepciones. Parte de declaraciones. Completa el siguiente código con las palabras clave: Consejo: Ejecuta tu código resultante para verificar que tienes las respuestas correctas Suma de Números Pares Bloque que calcula la suma de los números pares del 1 al 10 utilizando un bucle FOR y muestra el resultado por pantalla. DECLARE suma NUMBER := 0; -- Inicializa una variable para almacenar la suma BEGIN FOR i IN 1..10 ((1)) -- Itera del 1 al 10 IF i MOD 2 = 0 ((2)) -- Verifica si el número es par usando el operador MOD suma := suma + i; -- Si es par, suma el número a la variable suma END IF; END LOOP; DBMS_OUTPUT.PUT_LINE('La suma de los números pares del 1 al 10 es: ' || suma); -- Muestra el resultado END; /. 1. 2. 3. 4. 5. Completa los siguientes huecos para que el código funcione correctamente: Crear un usuario llamado "empleado_e4" con la contraseña "empl1234". Asignar el privilegio de selección de datos a una vista llamada "v_informacion_empleados_e4" al usuario "empleado_e4". Crear un rol llamado "rol_empleado". Asignar al rol los privilegios de create session y selección en la tabla "informacion_salarios". Asignar el rol al usuario "empleado_e4". Crear un procedimiento almacenado llamado "actualizar_salario" que acepte dos parámetros: el ID del empleado y el nuevo salario. El procedimiento debe actualizar el salario del empleado en la tabla "informacion_salarios". Revocar el privilegio de selección de la tabla "informacion_salarios" para el rol "rol_empleado". Completa los espacios en blanco con las palabras exactas: CREATE ((1))empleado_e4 IDENTIFIED BY empl1234; GRANT ((2)) ON v_informacion_empleados_e4 ((2)) empleado_e4; CREATE ((3)) rol_empleado; GRANT CREATE ((4)) TO rol_empleado; ((5)) SELECT ON informacion_salarios ((5)) rol_empleado; GRANT rol_empleado ((6)) empleado_e4; CREATE OR REPLACE ((7)) actualizar_salario (p_id_empleado NUMBER, p_nuevo_salario NUMBER) AS ((8)) UPDATE informacion_salarios ((9)) salario ((9)) p_nuevo_salario ((10)) id_empleado = p_id_empleado; END; ((10)) SELECT ON informacion_salarios ((10)) rol_empleado;. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Completa el siguiente código con las palabras adecuadas: Tenemos la tabla "products" y queremos un trigger que actualice la fecha de última modificación de cada registro que se ha modificado en la tabla "products" con la fecha actual CREATE TABLE products ( product_id NUMBER PRIMARY KEY, product_name VARCHAR2(50), price NUMBER, last_modified DATE ); CREATE ((1)) REPLACE ((2)) update_last_modified ((3)) UPDATE ((4)) products FOR EACH ((5)) BEGIN ((6)).last_modified := ((7)); END; /. 1. 2. 3. 4. 5. 6. 7. Completa el siguiente código con las palabras clave que faltan: Consejo: Ejecuta tu código resultante para verificar que tienes las respuestas correctas Tenemos la estructura de la tabla empleados que contiene la información de los empleados: -- Crear la tabla "empleados" CREATE TABLE empleados ( id_empleado NUMBER(6) PRIMARY KEY, nombre_empleado VARCHAR2(50), fecha_contratacion DATE, puesto VARCHAR2(50), id_supervisor NUMBER(6), salario NUMBER(8, 2), id_departamento NUMBER(4) ); -- Bloque PL/SQL para mostrar el nombre del empleado y su salario DECLARE CURSOR c_empleados IS En blanco 1 nombre_empleado, En blanco 2 FROM empleados; v_nombre_empleado En blanco 3.nombre_empleado%TYPE; v_salario_empleado empleados.salarioEn blanco 4TYPE; BEGIN OPEN c_empleados; LOOP En blanco 5 c_empleados INTO v_nombre_empleado, v_salario_empleado; EXIT WHEN c_empleados%En blanco 6; DBMS_OUTPUT.PUT_LINE('Nombre del empleado: ' || v_nombre_empleado || ', Salario: ' || En blanco 7); END LOOP; En blanco 8 c_empleados; END; /. 1. 2. 3. 4. 5. 6. 7. 8. Completa el siguiente código con las palabras adecuadas: Crea un trigger que se ejecute antes de intentar eliminar un productos, si el producto tiene un precio mayor o igual a 1000, no permita la eliminación y muestre un mensaje de error. Si el producto tiene un precio de menos de 1000, entonces se guardará el backup antes de eliminarlo en "products_backup" que tiene los mismos campos que la tabla "products" CREATE TABLE products_backup( product_id NUMBER PRIMARY KEY, product_name VARCHAR2(50), price NUMBER, last_modified DATE ); CREATE OR REPLACE DELETE backup_deleted_product ROW DELETE :OLD products FOR EACH > BEGIN IF ELSE.price INSERT 1000 THEN RAISE_APPLICATION_ERROR(-20001, 'No se permite eliminar productos con un precio mayor a 1000.'); VALUES En blanco 8 INTO products_backup En blanco 9 (:OLD.product_id, :OLD.product_name, En blanco 10, :OLD.last_modified); END En blanco 11; END; /. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10/11. |




