But they help keep your PL/SQL organized.
Here is an example:
CREATE TABLE ACME_ALERTS (
ERRORCODE VARCHAR2(100) NOT NULL,
INTERFACEID VARCHAR2(100) NOT NULL,
CREATIONDATE DATE NOT NULL,
ISACTIVE NUMBER
);
CREATE INDEX "ACME_ALERTS_INDEX1" ON "ACME_ALERTS" ("ERRORCODE", "INTERFACEID") ;
create or replace package PKG_ACME_ALERTS
IS
FUNCTION ACME_findAlertInstance (theERRORCODE IN VARCHAR2, theINTERFACEID IN VARCHAR2 ) return NUMBER;
PROCEDURE ACME_insertAlertInstance (theERRORCODE IN VARCHAR2, theINTERFACEID IN VARCHAR2 );
PROCEDURE ACME_resetAlertInstance (theERRORCODE IN VARCHAR2, theINTERFACEID IN VARCHAR2 );
END PKG_ACME_ALERTS;
/
CREATE OR REPLACE PACKAGE BODY PKG_ACME_ALERTS is
FUNCTION ACME_findAlertInstance
(theERRORCODE IN VARCHAR2, theINTERFACEID IN VARCHAR2 ) return NUMBER
is
numberOfAlerts number;
begin
SELECT COUNT(*) INTO numberOfAlerts
from ACME_ALERTS
where ERRORCODE=theERRORCODE
and INTERFACEID=theINTERFACEID
and ISACTIVE=1
and CREATIONDATE < (SYSDATE - 4/24);
return numberOfAlerts;
end ACME_findAlertInstance;
PROCEDURE ACME_insertAlertInstance
(theERRORCODE IN VARCHAR2, theINTERFACEID IN VARCHAR2 )
as
begin
INSERT INTO ACME_ALERTS (
ERRORCODE, INTERFACEID, CREATIONDATE, ISACTIVE
) VALUES (
theERRORCODE, theINTERFACEID, SYSDATE, 1
);
end ACME_insertAlertInstance;
PROCEDURE ACME_resetAlertInstance
(theERRORCODE IN VARCHAR2, theINTERFACEID IN VARCHAR2 )
as
begin
UPDATE ACME_ALERTS set ISACTIVE = 0 where ERRORCODE=theERRORCODE and INTERFACEID=theINTERFACEID;
end ACME_resetAlertInstance;
end PKG_ACME_ALERTS;
/
No comments:
Post a Comment