1408:
1409: BEGIN
1410: SELECT 1
1411: INTO l_exists
1412: FROM hxc_rdb_logins
1413: WHERE user_id = FND_GLOBAL.user_id
1414: AND login_id = FND_GLOBAL.login_id
1415: AND status = 'VALID';
1416:
1443:
1444: CURSOR get_others
1445: IS SELECT ROWIDTOCHAR(rdb.rowid),
1446: NVL(fnd.end_time,hr_general.end_of_time)
1447: FROM hxc_rdb_logins rdb,
1448: fnd_logins fnd
1449: WHERE rdb.login_id = fnd.login_id
1450: AND rdb.user_id = fnd_global.user_id
1451: AND rdb.login_id <> fnd_global.login_id;
1454: BEGIN
1455:
1456:
1457: -- Delete anything which is older than half an hour.
1458: DELETE FROM hxc_rdb_logins
1459: WHERE user_id = FND_GLOBAL.user_id
1460: AND login_id <> FND_GLOBAL.login_id
1461: AND last_action_date < SYSDATE - (1/48);
1462:
1465: BEGIN
1466:
1467: SELECT 1
1468: INTO l_exists
1469: FROM hxc_rdb_logins
1470: WHERE user_id = fnd_global.user_id
1471: AND login_id = fnd_global.login_id
1472: AND status = 'INVALID';
1473:
1485:
1486: -- Either insert a new row or update the last touched date
1487: -- if already existing.
1488: BEGIN
1489: INSERT INTO hxc_rdb_logins
1490: (user_id,
1491: login_id,
1492: last_action_date,
1493: status,
1500: 'N');
1501:
1502: EXCEPTION
1503: WHEN DUP_VAL_ON_INDEX THEN
1504: UPDATE hxc_rdb_logins
1505: SET last_action_date = SYSDATE
1506: WHERE user_id = FND_GLOBAL.user_id
1507: AND login_id = FND_GLOBAL.login_id;
1508: END;
1517:
1518: -- Anything which is properly logged out
1519: -- can be deleted.
1520: FORALL i IN rowtab.FIRST..rowtab.LAST
1521: DELETE FROM hxc_rdb_logins
1522: WHERE ROWID = CHARTOROWID(rowtab(i))
1523: AND edtab(i) <> hr_general.end_of_time;
1524:
1525:
1524:
1525:
1526: -- Update any other session to be invalid.
1527: FORALL i IN rowtab.FIRST..rowtab.LAST
1528: UPDATE hxc_rdb_logins
1529: SET status = 'INVALID'
1530: WHERE ROWID = CHARTOROWID(rowtab(i))
1531: AND edtab(i) = hr_general.end_of_time
1532: RETURNING rowid BULK COLLECT INTO l_tab;
1536: l_rowid := NULL;
1537: BEGIN
1538: SELECT ROWIDTOCHAR(rdb.rowid)
1539: INTO l_rowid
1540: FROM hxc_rdb_logins rdb
1541: WHERE login_id = FND_GLOBAL.login_id
1542: AND user_id = FND_GLOBAL.user_id
1543: AND notified = 'N';
1544:
1550:
1551: IF l_tab.COUNT > 0
1552: AND l_rowid IS NOT NULL
1553: THEN
1554: UPDATE hxc_rdb_logins
1555: SET notified = 'Y'
1556: WHERE rowid = chartorowid(l_rowid);
1557: RETURN 'WARNING';
1558: