git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@50874 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
178
Data/BulkLoad/EFT/Nominations/plsql/amfr_journal.bdy
Normal file
178
Data/BulkLoad/EFT/Nominations/plsql/amfr_journal.bdy
Normal file
@@ -0,0 +1,178 @@
|
||||
CREATE OR REPLACE PACKAGE BODY amfr_journal IS
|
||||
--
|
||||
g_ause_id audit_sessions.ause_id%TYPE;
|
||||
--
|
||||
-- Private
|
||||
--
|
||||
FUNCTION get_session RETURN sessions.client_id%TYPE IS
|
||||
--
|
||||
l_return sessions.client_id%TYPE;
|
||||
--
|
||||
BEGIN
|
||||
--
|
||||
BEGIN
|
||||
--
|
||||
IF caco_security.g_client_id IS NOT NULL THEN
|
||||
--
|
||||
l_return := caco_security.g_client_id;
|
||||
--
|
||||
ELSE
|
||||
--
|
||||
l_return := wsgl.getclientid;
|
||||
--
|
||||
END IF;
|
||||
--
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
l_return := NULL;
|
||||
END;
|
||||
--
|
||||
RETURN l_return;
|
||||
--
|
||||
END get_session;
|
||||
--
|
||||
PROCEDURE log_session ( p_session_id IN sessions.client_id%TYPE
|
||||
, p_ause_id OUT audit_sessions.ause_id%TYPE
|
||||
) IS
|
||||
--
|
||||
PRAGMA AUTONOMOUS_TRANSACTION;
|
||||
--
|
||||
l_ip_address sessions.ip_address%TYPE;
|
||||
l_syus_id system_users.syus_id%TYPE;
|
||||
l_syus_name audit_sessions.username%TYPE;
|
||||
--
|
||||
BEGIN
|
||||
--
|
||||
IF p_session_id IS NOT NULL THEN
|
||||
--
|
||||
BEGIN
|
||||
--
|
||||
SELECT ip_address
|
||||
,syus_id
|
||||
INTO l_ip_address
|
||||
,l_syus_id
|
||||
FROM sessions
|
||||
WHERE sessions.client_id = p_session_id;
|
||||
--
|
||||
l_syus_name := caco_utilities.get_syus_name(l_syus_id);
|
||||
--
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
l_ip_address := 'n/a';
|
||||
l_syus_name := 'UNKNOWN';
|
||||
END;
|
||||
--
|
||||
ELSE
|
||||
--
|
||||
l_ip_address := 'n/a';
|
||||
l_syus_name := 'SYSTEM';
|
||||
--
|
||||
END IF;
|
||||
--
|
||||
INSERT INTO audit_sessions ( username
|
||||
, session_id
|
||||
, ip_address
|
||||
)
|
||||
VALUES ( l_syus_name
|
||||
, NVL(p_session_id, 'SYSTEM')
|
||||
, l_ip_address
|
||||
)
|
||||
RETURNING ause_id INTO p_ause_id;
|
||||
--
|
||||
COMMIT;
|
||||
--
|
||||
END log_session;
|
||||
--
|
||||
PROCEDURE init IS
|
||||
--
|
||||
l_session_id sessions.client_id%TYPE;
|
||||
--
|
||||
BEGIN
|
||||
--
|
||||
-- Check to see if we have already have an audit session, which we shouldn't have if we're initialising the package
|
||||
--
|
||||
IF g_ause_id IS NULL THEN
|
||||
--
|
||||
-- Check that there is a valid session ID, if not, we're a system process
|
||||
--
|
||||
l_session_id := get_session;
|
||||
--
|
||||
IF l_session_id IS NOT NULL THEN
|
||||
--
|
||||
-- Check for the existance of a session for this ID
|
||||
--
|
||||
FOR i IN ( SELECT ause.ause_id
|
||||
FROM audit_sessions ause
|
||||
WHERE ause.session_id = l_session_id
|
||||
-- AND ause.username = caco_utilities.get_syus_name
|
||||
AND ause.created_on BETWEEN SYSDATE -1 AND SYSDATE
|
||||
ORDER BY ause.created_on desc) LOOP
|
||||
--
|
||||
g_ause_id := i.ause_id;
|
||||
--
|
||||
EXIT;
|
||||
--
|
||||
END LOOP;
|
||||
--
|
||||
END IF;
|
||||
--
|
||||
IF g_ause_id IS NULL THEN
|
||||
--
|
||||
log_session( l_session_id
|
||||
, g_ause_id );
|
||||
--
|
||||
END IF;
|
||||
--
|
||||
END IF;
|
||||
--
|
||||
END init;
|
||||
--
|
||||
-- Public
|
||||
--
|
||||
PROCEDURE log_transaction ( p_operation_type audit_transactions.operation_type%TYPE
|
||||
, p_operation_target audit_transactions.operation_target%TYPE
|
||||
, p_old_values name_value_tab
|
||||
, p_new_values name_value_tab) IS
|
||||
--
|
||||
-- Was going to be an autonomous transaction but only want to record successful transactions.
|
||||
--
|
||||
BEGIN
|
||||
--
|
||||
caco_debug.putline('AMFR_JOURNAL Session: '||g_ause_id|| ' Transaction on: '||p_operation_target);
|
||||
--
|
||||
INSERT INTO audit_transactions ( autr_id
|
||||
, ause_ause_id
|
||||
, operation_type
|
||||
, operation_target
|
||||
, old_values
|
||||
, new_values
|
||||
, created_on
|
||||
, created_by
|
||||
)
|
||||
VALUES ( autr_seq.NEXTVAL
|
||||
, g_ause_id
|
||||
, p_operation_type
|
||||
, SUBSTR(p_operation_target,1 ,30)
|
||||
, p_old_values
|
||||
, p_new_values
|
||||
, SYSDATE
|
||||
, caco_utilities.get_syus_id);
|
||||
EXCEPTION
|
||||
WHEN others THEN
|
||||
cout_err.report_and_go( sqlcode, sqlerrm(sqlcode) );
|
||||
--
|
||||
END log_transaction;
|
||||
--
|
||||
FUNCTION about RETURN VARCHAR2 IS
|
||||
BEGIN
|
||||
RETURN(g_revision||CHR(10)||g_header);
|
||||
END about;
|
||||
--
|
||||
BEGIN
|
||||
/**
|
||||
-- Initialization
|
||||
*/
|
||||
init;
|
||||
--
|
||||
END amfr_journal;
|
||||
/
|
||||
Reference in New Issue
Block a user