|
|
|
|
Salut,
|
Salut,
DECLARE
CURSOR c1 IS SELECT DISTINCT OSNAME FROM MYLOG_SESSION;--recupere tous les users enregistrés
CURSOR c2 (OSN VARCHAR) IS SELECT * FROM MYLOG_SESSION WHERE OSNAME=OSN ORDER BY datetime ASC;--recuperations des données par utilisateurs
cur2 c2%ROWTYPE;
cur1 c1%ROWTYPE;
cur3 c2%ROWTYPE;
tmp CHAR;
i INTEGER;
BEGIN
OPEN c1;
i:=0;--compteur pour afficher les resultats
FETCH c1 INTO cur1;
WHILE c1%FOUND LOOP --boucle pour balayer tous les utilisateurs
OPEN c2(cur1.OSNAME); --selection des données utilisateurs
FETCH c2 INTO cur2;
WHILE c2%FOUND LOOP --boucle pour verifier si 2 connexions à des endroits differents (si 2 'O' consecutif, il a ouvert 2 session à deux endroits differents
tmp:=cur2.STATUS;
WHILE tmp='O' AND c2%FOUND LOOP --comptage->si i>1 alors 2 connexions
i:=i+1;
cur3:=cur2;
FETCH c2 INTO cur2;
tmp:=cur2.STATUS;
END LOOP;
IF (i>1) THEN --si le compteur est >1 alors on affiche la personne et la derniere heure de la connexion ouverte
DBMS_OUTPUT.PUT_LINE(cur3.OSNAME||' '||TO_CHAR(cur3.DATETIME,'DD/MM/YYYY HH24:MI:ss')||' '||cur3.STATUS);
END IF;
i:=0; --remise à zero du compteur
FETCH c2 INTO cur2;
END LOOP;
CLOSE c2;
FETCH c1 INTO cur1;
END LOOP;
CLOSE c1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END;
Je sais pas si cela pourra t'aider mais bon....tu trouveras sinon des pistes!! @+ Sur un malentendu, ca peut marcher!! |
Ce n'est pas une histoire de loggin lol voici les tables
|
Salut,
CREATE OR REPLACE PROCEDURE ma_procedure IS
CURSOR c1 IS SELECT prof,horaire,jour,COUNT(prof) FROM EdT HAVING COUNT(prof)>1 ;--récupère l'id des profs,l'horaire et jour où ils sont à deux endroits différents pour le même horaire
cur1 c1%ROWTYPE;
nom_p VARCHAR(50);
prenom_p VARCHAR(50);
BEGIN
OPEN c1;
FETCH c1 INTO cur1;
WHILE c1%FOUND LOOP
SELECT nom, prenom INTO nom_p,prenom_p FROM Profs where id=cur1.prof;--selectionne nom du prof et prenom
DBMS_OUTPUT.PUT_LINE(nom_p||' '||' '||prenom_p||' '||TO_CHAR(cur1.horaire,'DD/MM/YYYY HH24:MI:ss'));--affiche à l'ecran
FETCH c1 INTO cur1;
END LOOP;
CLOSE c1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END ma_procedure;
/
Y'a peut-etre quelques erreurs... mais tu as la philosophie du truc @+ Sur un malentendu, ca peut marcher!! |