Межбанковский клиринг
= aDebitBank;
EXCEPTION
WHEN No_Data_Found THEN
UPDATE Messages
SET MsgStatus = GlobalConst.cMsgDebitError
WHERE MessageID = aMessageID;
RETURN GlobalConst.cMsgDebitError;
END;
IF aBankStatus = GlobalConst.cBankNotWork THEN
UPDATE Messages
SET MsgStatus = GlobalConst.cMsgDebitError
WHERE MessageID = aMessageID;
RETURN GlobalConst.cMsgDebitError;
END IF;
BEGIN
SELECT BankStatus INTO aBankStatus FROM BankState
WHERE BankID = aCreditBank;
EXCEPTION
WHEN No_Data_Found THEN
UPDATE Messages
SET MsgStatus = GlobalConst.cMsgCreditError
WHERE MessageID = aMessageID;
RETURN GlobalConst.cMsgCreditError;
END;
IF aBankStatus = GlobalConst.cBankNotWork THEN
UPDATE Messages
SET MsgStatus = GlobalConst.cMsgCreditError
WHERE MessageID = aMessageID;
RETURN GlobalConst.cMsgCreditError;
END IF;
UPDATE Messages
SET MsgStatus = GlobalConst.cMsgProcessed
WHERE MessageID = aMessageID;
RETURN GlobalConst.cMsgProcessed;
END CheckMessage;
-- Подтверждает платежный документ, вызывается при наличии необходимых
-- документов
PROCEDURE ConfirmMessage(aMessageID IN INT)
IS
aMsgStatus INT;
aTmpID INT;
aAmount INT;
aDebitBank INT;
aCreditBank INT;
BEGIN
SELECT MsgStatus, DebitBankID, CreditBankID
INTO aMsgStatus, aDebitBank, aCreditBank
FROM Messages
WHERE MessageID = aMessageID;
IF aMessageID = GlobalConst.cMsgProcessed THEN
UPDATE Messages
SET MsgStatus = GlobalConst.cMsgAccepted
WHERE MessageID = aMessageID;
SELECT Amount INTO aAmount FROM Messages
WHERE MessageID = aMessageID;
BEGIN
SELECT BankID INTO aTmpID FROM TmpRes
WHERE BankID = aDebitBank;
EXCEPTION
WHEN No_Data_Found THEN
INSERT INTO TmpRes (BankID, DebitPos, CreditPos)
VALUES (aDebitBank, 0, 0);
END;
UPDATE TmpRes
SET DebitPos = DebitPos + aAmount
WHERE BankID = aDebitBank;
BEGIN
SELECT BankID INTO aTmpID FROM TmpRes
WHERE BankID = aCreditBank;
EXCEPTION
WHEN No_Data_Found THEN
INSERT INTO TmpRes (BankID, DebitPos, CreditPos)
VALUES (aCreditBank, 0, 0);
END;
UPDATE TmpRes
SET CreditPos = CreditPos - aAmount
WHERE BankID = aCreditBank;
END IF;
END ConfirmMessage;
END ServerUtils;
/
SHOW ERROR;
---------------------------------------------------------
-- Таблица и последовательность для ведения статистики
---------------------------------------------------------
PROMPT Create table Statistics...
PROMPT Creating sequence Stat_Seq...
CREATE SEQUENCE Stat_Seq
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
MINVALUE 1
NOCACHE
CYCLE;
CREATE TABLE Statistics
(
ItemNo NUMBER(8) -- Номер элемента выборки
CONSTRAINT itemno_pk PRIMARY KEY,
WorkDay DATE, -- Дата и время платежа
BankID NUMBER(8) -- Номер банка
DebitPos INT, -- Дебетовая позиция
CreditPos INT -- Кредитовая позиция
);
-----------------------------------------------
-- Заполнение таблицы классификаторов
-----------------------------------------------
PROMPT Inserting data into table Status ...
BEGIN
DELETE FROM Status WHERE StatusClass = 1;
INSERT INTO Status VALUES (1, GlobalCon st.cStatusClass,
'Статус банка в текущем сеансе');
INSERT INTO Status VALUES (1, GlobalConst.cBankWork,
'Банк участвует в текущем сеансе');
INSERT INTO Status VALUES (1, GlobalConst.cBankStopWork,
'Банк закончил текущий сенс');
INSERT INTO Status VALUES (1, GlobalConst.cBankNotWork,
'Банк не участвует в текущем сенсе');
COMMIT;
DELETE FROM Status WHERE StatusClass = 2;
INSERT INTO Status VALUES (2, GlobalConst.cStatusClass,
'Статус сообщения о платеже');
INSERT INTO Status VALUES (2, GlobalConst.cMsgNotProcessed,
'Сообщение не обработано');
INSERT INTO Status VALUES (2, GlobalConst.cMsgSourceError,
'Банк-источник не работает');
INSERT INTO Status VALUES (2, GlobalConst.cMsgDebitError,
'Банк по дебету счета не работает');
INSERT INTO Status VALUES (2, GlobalConst.cMsgCreditError,
'Банк по кредиту счета не работает');
INSERT INTO Status VALUES (2, GlobalConst.cMsgProcessed,
'Сообщение обработано и требует документального подтверждения');
INSERT INTO Status VALUES (2, GlobalConst.cMsgAccepted,
'Сообщение обработано и принято в систему взаимозачета');
COMMIT;
END;
/
-----------------------------------------------
-- Таблица классификаторов
-----------------------------------------------
PROMPT Create table Status ...
CREATE TABLE Status
(
StatusClass NUMBER(3),
StatusNo NUMBER(3),
StatusText VARCHAR2(70) NOT NULL,
CONSTRAINT status_pk PRIMARY KEY (StatusClass, StatusNo)
);
-------------------------------------------------------
-- Таблица текущих результатов клирингового сеанса
-------------------------------------------------------
PROMPT Creating table TmpRes...
CREATE TABLE TmpRes
(
BankID NUMBER(8)
CONSTRAINT tmpresbankid_fk REFERENCES Banks ON DELETE CASCADE,
DebitPos INT,
CreditPos INT
);
---------------------------------------------------
-- Удаление объектов системы
---------------------------------------------------
PROMPT Deleting databases...
SET ECHO ON;
DROP SEQUENCE Stat_Seq;
DROP TABLE Statistics;
DROP TABLE BankState;
DROP TABLE Status;
DROP SEQUENCE Msg_Seq;
DROP TABLE Messages;
DROP TABLE Results;
DROP TABLE TmpRes;
DROP SEQUENCE BankID_Seq;
DROP TABLE Banks;
PROMPT Deleting packages...
DROP PACKAGE BODY ServerUtils;
DROP PACKAGE ServerUtils;
DROP PACKAGE BODY ClientUtils;
DROP PACKAGE ClientUtils;
DROP PACKAGE BODY CommonUtils;
DROP PACKAGE CommonUtils;
SET ECHO OFF;
----------------------------------------------------------------
скачать реферат
первая ... 10 11 12 13