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


CREATE OR REPLACE PACKAGE BODY ClientUtils AS

-- Функция возвращает флаг состояния текущей сессии

FUNCTION GetSessionStatus RETURN INT IS BEGIN

RETURN ServerUtils.SessionState;

END GetSessionStatus;

-- Процедура подключения банка к очередной сессии клиринговой палаты -- Выполняется каждый рабочий день в определенное время после выполнения -- на сервере КП процедуры инициализации клирингового сеанса

FUNCTION StartBankSession(aBankID IN INT) RETURN INT IS BEGIN

IF ServerUtils.SessionState = GlobalConst.cSessionActive THEN

UPDATE BankState SET BankStatus = GlobalConst.cBankWork WHERE BankID = aBankID;

END IF;

RETURN ServerUtils.SessionState;

END StartBankSession;

-- Процедура выхода банка из текущего клирингового сеанса -- Выполняется кажый день в определенное время до закрытия сеанса -- на сервере КП

PROCEDURE StopBankSession(aBankID IN INT) IS BEGIN

UPDATE BankState SET BankStatus = GlobalConst.cBankStopWork WHERE BankId = aBankID;

END StopBankSession;

-- Функция возвращает уникальный номер вызывающего банка

FUNCTION GetOurID RETURN INT IS

Res INT;

BEGIN

SELECT BankID INTO Res FROM Banks WHERE UserName = USER;

END GetOurID;

-- Функция возвращает чистую позицию банка по окончанию сеанса

FUNCTION GetFinalSaldo(aBankID IN INT) RETURN INT IS

aSaldo INT;

BEGIN

BEGIN

SELECT DebitPos-CreditPos INTO aSaldo FROM Results WHERE BankID = aBankID;

EXCEPTION

WHEN No_Data_Found THEN aSaldo := NULL;

END;

RETURN aSaldo;

END GetFinalSaldo;

-- Процедура отсылки на сервер КП "электронного" платежа

PROCEDURE SendMessage(aSourceBankID IN INT, aDebitBankID IN INT, aCreditBankID IN INT, aAmount IN INT) IS

aMsgID INT;

BEGIN

SELECT Msg_Seq.NextVal INTO aMsgID FROM Dual;

INSERT INTO Messages VALUES (aMsgID, aSourceBankID, aDebitBankID, aCreditBankID, aAmount, GlobalConst.cMsgNotProcessed);

END SendMessage;

END ClientUtils;

/ SHOW ERROR;

----------------------------------------------- -- Пакет CommonUtils -- Интерфейс общих подпрограмм -----------------------------------------------

PROMPT Creating package CommonUtils...

CREATE OR REPLACE PACKAGE CommonUtils AS

-- Возвращает уникальный номер банка по его имени FUNCTION GetBankID(aBankName IN VARCHAR2) RETURN INT;

-- Возвращает текущее дебетовое сальдо FUNCTION GetCurrentDebitSaldo(aBankID IN INT) RETURN INT;

-- Возвращает текущее кредитовое сальдо FUNCTION GetCurrentCreditSaldo(aBankID IN INT) RETURN INT;

END CommonUtils;

/ SHOW ERROR;

----------------------------------------------- -- Процедуры и функции общего пользования -----------------------------------------------

PROMPT Creating package CommonUtils...

CREATE OR REPLACE PACKAGE BODY CommonUtils AS

-- Возвращает уникальный идентификатор банка-участника по его имени

FUNCTION GetBankID(aBankName IN VARCHAR2) RETURN INT IS

Res INT;

BEGIN

BEGIN

SELECT BankID INTO Res FROM Banks WHERE BankName = aBankName;

EXCEPTION

WHEN No_Data_Found THEN Res := NULL;

END;

RETURN Res;

END GetBankID;

-- Возвращает текущее дебетовое сальдо банка-участника

FUNCTION GetCurrentDebitSaldo(aBankID IN INT) RETURN INT IS

Res INT;

BEGIN

BEGIN

SELECT DebitPos INTO Res FROM TmpRes WHERE BankID = aBankID;

EXCEPTION

WHEN No_Data_Found THEN Res := 0;

END;

RETURN Res;

END GetCurrentDebitSaldo;

-- Возвращает текущее кредитовое сальдо банка-участника

FUNCTION GetCurrentCreditSaldo(aBankID IN INT) RETURN INT IS

Res INT;

BEGIN

BEGIN

SELECT CreditPos INTO Res FROM TmpRes WHERE BankID = aBankID;

EXCEPTION

WHEN No_Data_Found THEN Res := 0;

END;

RETURN Res;

END GetCurrentCreditSaldo;

END CommonUtils;

/ SHOW ERROR;

-------------------------------------------------------- -- Модуль содержит глобальные константы --------------------------------------------------------

PROMPT Creating package GlobalConst

CREATE OR REPLACE PACKAGE GlobalConst AS

cStatusClass CONSTANT INT := -1;

cBankWork CONSTANT INT := 1; cBankStopWork CONSTANT INT := 2; cBankNotWork CONSTANT INT := 3;

cMsgNotProcessed CONSTANT INT := 1; cMsgAccepted CONSTANT INT := 2; cMsgSourceError CONSTANT INT := 3; cMsgDebitError CONSTANT INT := 4; cMsgCreditError CONSTANT INT := 5; cMsgProcessed CONSTANT INT := 6;

cSessionUnActive CONSTANT INT := 1; cSessionActive CONSTANT INT := 2;

END GlobalConst;

/ SHOW ERROR;

------------------------------------------------------ -- Модуль инициализации системы в СУБД Oracle 7.3.3 ------------------------------------------------------

CONNECT INTERNAL

SPOOL createdb.log

SET ECHO ON

CREATE TABLESPACE "CLEARING" DATAFILE 'C:\ORAWIN95\DATABASE\clearing.dbf' SIZE 5M REUSE DEFAULT STORAGE (INITIAL 10K NEXT 10K MINEXTENTS 1 MAXEXTENTS 120 PCTINCREASE 0);

CREATE USER "ALEX" IDENTIFIED BY "ALEX" DEFAULT TABLESPACE "CLEARING";

GRANT "DBA" TO "ALEX" WITH ADMIN OPTION; GRANT UNLIMITED TABLESPACE to "ALEX" WITH ADMIN OPTION; GRANT SELECT ANY TABLE to "ALEX" WITH ADMIN OPTION; GRANT GRANT ANY ROLE to "ALEX" WITH ADMIN OPTION; GRANT CREATE ANY SYNONYM to "ALEX" WITH ADMIN OPTION; GRANT DROP ANY SYNONYM to "ALEX" WITH ADMIN OPTION; GRANT EXECUTE ANY PROCEDURE to "ALEX"; GRANT CREATE USER to "ALEX"; GRANT ALTER USER to "ALEX"; GRANT DROP USER to "ALEX"; GRANT GRANT ANY PRIVILEGE to "ALEX";

SPOOL OFF

EXIT

-------------------------------------------------- -- Начальное создание объектов системы --------------------------------------------------

PROMPT Creating databases and sequences...

@@consts.pkg @@banks @@messages @@status @@statinit @@bnkstate @@results @@tmpres @@statist

PROMPT Creating packages...

@@srvrutil.pkg @@srvrutil.bdy

@@clntutil.pkg @@clntutil.bdy

@@commutil.pkg @@commutil.bdy

------------------------------------------------------------- -- Таблица и последовательность для обработки сообщений -------------------------------------------------------------

PROMPT Creating sequence Msg_Seq...

CREATE SEQUENCE Msg_Seq INCREMENT BY 1 START WITH 1 MAXVALUE 99999999 MINVALUE

скачать реферат
первая   ... 8 9 10 11 12 13
Рефераты / Банковское дело /