Este documento presenta 12 ejercicios sobre procedimientos, funciones, aserciones y triggers en SQL. Los ejercicios cubren temas como crear aserciones y triggers, insertar y actualizar datos en tablas, y recuperar y calcular información mediante funciones y procedimientos almacenados.
0 calificaciones0% encontró este documento útil (0 votos)
37 vistas2 páginas
Este documento presenta 12 ejercicios sobre procedimientos, funciones, aserciones y triggers en SQL. Los ejercicios cubren temas como crear aserciones y triggers, insertar y actualizar datos en tablas, y recuperar y calcular información mediante funciones y procedimientos almacenados.
Este documento presenta 12 ejercicios sobre procedimientos, funciones, aserciones y triggers en SQL. Los ejercicios cubren temas como crear aserciones y triggers, insertar y actualizar datos en tablas, y recuperar y calcular información mediante funciones y procedimientos almacenados.
Este documento presenta 12 ejercicios sobre procedimientos, funciones, aserciones y triggers en SQL. Los ejercicios cubren temas como crear aserciones y triggers, insertar y actualizar datos en tablas, y recuperar y calcular información mediante funciones y procedimientos almacenados.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
Está en la página 1de 2
PRÁCTICA DE PROCEDIMIENTOS, FUNCIONES, ASERCIONES Y TRIGGERS
1. Considérese el siguiente esquema relacional. Cada empleado puede trabajar en más de un
departamento; el campo tiempo parcial de la relación Trabaja muestra el porcentaje de tiempo que cada empleado trabaja en los diferentes departamentos. Emp(ide: integer, nombree: varchar2(40), edad: integer, sueldo: number(9,2)) Trabaja(ide: integer, idd: integer, tiempo parcial: integer) Dep(idd: integer, presupuesto: number(10,2), idencargado: integer) Escríba las aserciones para lo siguiente: a) El porcentaje total de nombramientos (tiempo parcial) para cada empleado debe ser inferior al 100%. b) Los encargados siempre deben tener un sueldo más elevado que cualquier empleado que dirijan. Escriba los triggers (disparadores) para lo siguiente: a) Siempre que se conceda un aumento a un empleado se debe incrementar el sueldo de los encargados con el mismo importe. b) Siempre que se conceda un aumento a un empleado se debe incrementar el sueldo de los encargados para que sea, como mínimo, igual. Además, siempre que se conceda un aumento a un empleado se debe incrementar el presupuesto de los departamentos con el aumento del empleado. El presupuesto debe ser mayor que la suma de los sueldos de todos los empleados del departamento. Abortar la operación update usando raise_application_error con el mensaje respectivo, cuando no se cumplan las restricciones. 2. Un esquema Compañía tiene las siguientes tablas (entre otras): Empleado(NSS char(9), NombreP varchar(15), Apellido varchar(15), FechaN date, Direccion varchar(30), Sexo char, Salario number(9,2), NSSSUPER char(9), ND int) Deoartamento(Numerod int, NombreD varchar2(15), NSSGte char(9), FechaInicGte date) Crear un procedimiento con dos parámetros: Nombre de departamento y Aumento (porcentaje). El procedimiento va aumentar el salario de los empleados con ese Nombre de departamento. Si no existe el Nombre del departamento en la tabla Departamento use el bloque EXCEPTION y raise_application_error dentro de él con el mensaje respectivo. 3. Existe una tabla Informe_Notas(IdSeccion int, CodEstudiante int, Nota int) en el esquema Educación. Crear un procedimiento con tres parámetros: Identificador de la Sección, código del Estudiante y Nota. El procedimiento va insertar una fila a la tabla Informe_Notas. Recuerde que IdSeccion debe existir en la tabla Sección, CodEstudiante debe existir en la tabla Estudiante y no debe existir una fila en la tabla Informe_Notas con los mismos valores de los argumentos de IdSeccion y CodEstudiante para poder insertar una nueva fila. Use EXCEPTION y raise_application_error con el mensaje respectivo. 4. Usando el esquema del ejercicio 1 crear un procedimiento con un parámetro de entrada el idd de un departamento y tres parámetros de salida: el número de empleados que trabajan en ese departamento, la suma de los salarios de dichos empleados y el promedio de los salarios de dichos empleados. Si no existe el idd en la tabla use el bloque EXCEPTION y raise_application_error dentro de él con el mensaje respectivo. 5. Una tabla empleados tiene los atributos: cod_emp integer PRIMARY KEY, nom_emp varchar2(30), salario number(9,2), fecha_nac date, comision number(3,2) (comision>=0 and comision<=1), cod_jefe integer. Crear un procedimiento para insertar un nuevo empleado en la tabla empleados. Los argumentos del procedimiento son los valores de los atributos del empleado. Utilizar la secuencia sec_emp para obtener el valor de la clave primaria del nuevo empleado. 6. Usando la tabla empleados de (5) crear una función para calcular el sueldo total de un empleado pasando como parámetro su cod_emp. Tenga en cuenta que hay que añadir la comisión (que es un porcentaje adicional del salario) al salario. La función retorna el sueldo total calculado. Si no existe el cod_emp en la tabla empleados use el bloque EXCEPTION para retornar 0. 7. Una tabla PedidosCabecera tiene los atributos: IdPedido Int PRIMARY KEY, Idcliente varchar2(5), idEmpleado Int, fechaPedido date, fechaEntrega Date, fechaEnvio Date, enviopedido char, destinatario varchar2(60), nombreDestinatario varchar2(30), dirdestinatario varchar2(30). Crear una función donde ingrese el id del empleado y retorne la cantidad de pedidos registrados en el presente año por dicho empleado. Si no existe el idEmpleado en la tabla PedidosCabecera use el bloque EXCEPTION para retornar 0. 8. Crear un trigger que se active antes de la operación update del salario de la tabla empleados de (5). El disparador (trigger) aborta la operación update si se aumenta el salario en más de un 20 %. 9. La tabla medicamentos( cod_med int, nom_med varchar2(20), precio number(4,2), fecha_alta date DEFAULT SYSDATE). Crear un trigger Genera_Cod_Medicamento que se dispara cada vez que se produce el evento Insert en la tabla medicamentos: solicita el siguiente valor de la secuencia sec_med y lo asigna al nuevo código de medicamento. 10. Desarrollar un procedimiento para insertar un medicamento en la tabla del ejercicio 9 teniendo en cuenta la funcionalidad del trigger del ejercicio 9, esto es, la existencia de la secuencia. La fecha_alta será la fecha actual. 11. Un esquema eBanca tiene las siguientes relaciones (tablas): movimiento(id int, fecha datetime, cantidad int, dni_cliente char(8), cod_cuenta int) sospechosos(id int, cod_cuenta int, fecha datetime, cantidad int, usuario varchar(20)) clientes(cod_cliente int, dni char(8), nombre varchar(20), apellido1 varchar(20), apellido2 varchar(20), direccion varchar(30)) cuenta(cod_cuenta int, tipo char, cod_cliente int, fecha date, saldo int) Crear un trigger Agrega_Sospechosos que se dispara cada vez que se produce el evento Insert en la tabla movimiento. Si los ingresos son mayores a 3000 o los retiros realizados mayores a 1000 (cantidad menor que -1000) en la fila insertada entonces insertar una fila en la tabla sospechosos. Usar la secuencia sec_sospechosos. En el atributo usuario se almacena el nombre del cliente. En los atributos fecha, cantidad y cod_cuenta se almacenas los valores respectivos de la tabla movimiento. 12. La tabla emp_control tiene los atributos: cod_emp int, fecha date, usuario varchar(20), tipo_op varchar(15).Crear un trigger a nivel fila para los eventos insert. Update y delete sobre la tabla empleados de (5). El trigger va almacenar en la tabla emp_control el cod_emp, la fecha (sysdate), el nombre del usuario que emitió el evento (user) y el tipo de operación que modificó la tabla empleados. Si se realizó insert almacena `inserción’ en tipo_op. Si se realizó update, se almacena `actualización’ en tipo_op. Sí se realizó delete se almacena `eliminación’ en tipo_op ( Use funciones inserting, updating y deleting).