Esta semana en clase de Distribuidas el profe nos pidió aplicar el Lock en un problema de correo dentro de nuestra ‘red’. Ha que cosas:

Lo único que aplicamos fue un [NOWAIT] después del Select correspondiente!..

Eso impidió que se pudieran loggear los usuarios con el mismo user, caso resuelto! Ahora… ¿Cómo avisarles que la cuenta ia estaba abierta? Y la solución fue:

EXCEPTION WHEN OTHERS THEN….

Ja ja ^^ Chekense no’mas:

CREATE OR REPLACE
PROCEDURE correo(logi varchar2, passw varchar2)
IS
log varchar2(10):=logI;
pass varchar2(30):=passw;
reg usuarios%rowtype;
CURSOR mensajitos
IS
select * from mensajes WHERE dest=log;
regm mensajes%rowtype;
BEGIN
SELECT * into reg from usuarios where login=log FOR UPDATE NOWAIT;
if sql%found then
if log=reg.login then
if pass=reg.paswd then
dbms_output.put_line(‘*********************************************’);
dbms_output.put_line(‘* *’);
dbms_output.put_line(‘* Bienvenido a Hotmail *’);
CM(log);
dbms_output.put_line(‘———————————————‘);
dbms_output.put_line(‘*’);
open mensajitos;
loop
fetch mensajitos into regm;
exit when mensajitos%notfound;
if regm.band = ‘F’ then
dbms_output.put_line(‘>> [‘||regm.id || ‘] – NUEVO’);
else
dbms_output.put_line(‘>> [‘||regm.id || ‘] – LEIDO’);
end if;
end loop;
close mensajitos;
dbms_output.put_line(‘———————————————‘);
dbms_output.put_line(‘*’);
dbms_output.put_line(‘¿Que desea hacer?’);
dbms_output.put_line(‘*’);
dbms_output.put_line(‘>> Nuevo’);
dbms_output.put_line(‘>> Leer’);
dbms_output.put_line(‘>> Borrar’);
dbms_output.put_line(‘>> Salir’);
else
dbms_output.put_line(‘Password incorrecto’);
end if;
end if;
else
dbms_output.put_line(‘Actualmente no es usuario Hotmail’);
end if;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line(‘Actualmente no es usuario Hotmail.’);
WHEN OTHERS THEN
dbms_output.put_line(‘.’);
dbms_output.put_line(‘*************************************************’);
dbms_output.put_line(‘Su cuenta está activa en otra estación de trabajo’);
dbms_output.put_line(‘*************************************************’);
END correo;
/

Perfecto, no? Por cierto, no se fijen en la tabulación! ¬¬

Anuncios