Межбанковский клиринг

= 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
Рефераты / Банковское дело /