Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Fecha de Entrega
30/11/2023
Período Académico
2023-C3
Práctica
Docente
Leandro Fondeur Gil
__Práctica 9 - Consultas Avanzadas______________________
EMP_ID NUMBER(6)
SALARY NUMBER(8,2)
DEPT_ID NUMBER(4)
DEPT_NAME VARCHAR2(30)
GRADE VARCHAR2(3)
MSG VARCHAR2(10)
Los valores del salario deben salir con el siguiente formato: 'fm$99,999'
8.6 Construya un código PL/SQL que busque el ID y salario de los
empleados que ganan una comisión mayor a un valor dado (Ejemplo:
0.15) y bloquee el salario para que no sea actualizado por otra sesión. En
la sección de ejecución actualice el salario de los empleados que vengan
en el cursor en un 15%. Para realizar esta práctica use un cursor FOR LOOP
con parámetros, FOR UDPATE OF, NOWAIT y CURRENT OF.
8.7 Realice la práctica 8.6 usando WAIT por 10 segundos. Conectado como
SYSTEM cree un usuario (otorgarles los privilegios correspondientes para
que pueda crear un sesión), luego conectado como HR se le debe otorgar
los privilegios de actualización sobre la tabla EMPLOYEES. Cree una
sesión nueva conectado con el usuario recientemente creado y actualice el
salario en un 10% al empleado 110 (no asiente los cambios). En la sesión
HR, corra el programa y en un primer escenario deje que pase los 10
segundos y comente qué pasa. En la misma sesión de HR, corra
nuevamente el programa y antes de que venzan los 10 segundos, diríjase a
la sesión del otro usuario y deshaga el cambio y comente el
comportamiento del programa.
-- Creación del usuario user13 conectado desde SYSTEM
En el escenario en que se dejó pasar los 10 segundos ocurre un error dado a que
transcurrieron los segundos establecidos y el registro del employee_id 110 desde el user13
lo mantiene bloqueado en la sesión de HR. Mientras que en el escenario en que se hizo
ROLLBACK desde user13 antes de los 10 segundos se terminó de ejecutar correctamente
desde HR ya que fue liberado en user13.