-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMain Package.sql
104 lines (96 loc) · 2.26 KB
/
Main Package.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
DECLARE
BEGIN
pkg_fss_settlement.upd_fss_daily_transaction;
END;
/
CREATE OR REPLACE PACKAGE pkg_fss_settlement
AS
PROCEDURE upd_fss_daily_transaction;
FUNCTION get_last_transaction_nr
RETURN NUMBER;
END pkg_fss_settlement;
/
CREATE OR REPLACE PACKAGE BODY pkg_fss_settlement
IS
g_last_transaction_nr NUMBER := get_last_transaction_nr;
PROCEDURE upd_error_table(p_err_msg VARCHAR2, p_location VARCHAR2)
IS
BEGIN
INSERT INTO error_table
VALUES
(
p_err_msg
, systimestamp
, p_location
);
COMMIT;
END upd_error_table;
FUNCTION get_last_transaction_nr
RETURN NUMBER IS
l_last_transaction_nr fss_daily_transactions.transactionNr%TYPE;
BEGIN
SELECT MAX(transactionNr)
INTO l_last_transaction_nr
FROM fss_daily_transactions;
IF l_last_transaction_nr IS NOT NULL
THEN
RETURN l_last_transaction_nr;
ELSE
RETURN 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
upd_error_table(SQLERRM, 'get_last_transaction_nr');
END get_last_transaction_nr;
PROCEDURE upd_fss_daily_transaction
IS
l_err_code VARCHAR2(50);
l_err_msg varchar2(50);
l_row_count NUMBER;
BEGIN
SELECT COUNT(transactionNr)
INTO l_row_count
FROM fss_daily_transactions;
IF l_row_count > 0
THEN
INSERT INTO fss_daily_transactions
SELECT transactionNr
, downloadDate
, terminalId
, cardId
, transactionDate
, cardOldValue
, transactionAmount
, cardNewValue
, transactionStatus
, errorCode
, null
FROM fss_transactions
WHERE transactionNr >
(
SELECT MAX(transactionNr)
FROM fss_daily_transactions
);
ELSE
INSERT INTO fss_daily_transactions
SELECT transactionNr
, downloadDate
, terminalId
, cardId
, transactionDate
, cardOldValue
, transactionAmount
, cardNewValue
, transactionStatus
, errorCode
, null
FROM fss_transactions;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
upd_error_table(SQLERRM, 'upd_fss_daily_transaction');
END upd_fss_daily_transaction;
END pkg_fss_settlement;