Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Another Trigger Query...

Re: Another Trigger Query...

From: <arijitchatterjee123_at_yahoo.co.in>
Date: 16 Dec 2004 00:32:46 -0800
Message-ID: <1103185966.403911.83910@f14g2000cwb.googlegroups.com>


THANKS FACULTIES,
THANKS FOR YOUR GREAT SUPPORT, AT LAST I MEET MY REQUIREMENT THROUGH YOUR
GREAT HELPS .I AM WRITING DOWN THE TOTAL THING.



CREATE TABLE STATEMENTS

CREATE TABLE TAB1
(
ID NUMBER,
NAME VARCHAR2(10),
AMOUNT NUMBER
);

CREATE TABLE TAB1COPY
(
ID NUMBER,
NAME VARCHAR2(10),
AMOUNT NUMBER,
SUMAMOUNT NUMBER
);



CREATING PACKAGE

CREATE OR REPLACE PACKAGE PKGTAB1
IS
BOOLVAL BOOLEAN := FALSE;
END;
/

BEFORE TRIGGER ON TAB1 CHANGING BOOLEAN VALUE

CREATE OR REPLACE TRIGGER MYTAB1TRGBEF1
BEFORE INSERT OR UPDATE OR DELETE ON TAB1 BEGIN
PKGTAB1.BOOLVAL := TRUE;
END;
/

AFTER TRIGGER ON TAB1 INSERTING IN TAB1COPY

CREATE OR REPLACE TRIGGER TRG_TAB1
AFTER INSERT OR UPDATE OR DELETE
ON TAB1 FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO TAB1COPY(ID,NAME,AMOUNT,SUMAMOUNT) VALUES (:NEW.ID ,:NEW.NAME ,:NEW.AMOUNT ,0);
UPDATE TAB1COPY SET SUMAMOUNT=0 WHERE NAME =:NEW.NAME ; PROC_TAB1(:NEW.NAME);
PKGTAB1.BOOLVAL := FALSE;
END IF; END;

PROCEDURE DOING NECESSARY CALCULATION IN TAB1COPY

CREATE OR REPLACE PROCEDURE PROC_TAB1(INAME VARCHAR2) IS
BEGIN
DECLARE
SUMAMT NUMBER := 0;
CURSOR CUR IS SELECT * FROM TAB1COPY WHERE NAME = INAME ORDER BY ID; BEGIN
FOR REC IN CUR LOOP
SUMAMT := SUMAMT+REC.AMOUNT;
UPDATE TAB1COPY SET SUMAMOUNT=SUMAMT WHERE NAME = INAME AND ID=REC.ID;
END LOOP;
SUMAMT := 0;
END;
END;

AFTER TRIGGER ON TAB1 CHANGING BOOLEAN VALUE

CREATE OR REPLACE TRIGGER MYTAB1TRGAFT
AFTER INSERT OR UPDATE OR DELETE ON TAB1 BEGIN
PKGTAB1.BOOLVAL := FALSE;
END;
/

BEFORE TRIGGER ON TAB1COPY CHECKING THE PACKAGE VARIABLES VALUE

CREATE OR REPLACE TRIGGER MYCOPYTRGAFT3
BEFORE INSERT OR UPDATE OR DELETE ON TAB1COPY BEGIN
IF (PKGTAB1.BOOLVAL=FALSE) THEN
RAISE_APPLICATION_ERROR(-20001,'ERROR FROM SQLPLUS'); END IF;
END;
/

REGARDS
ARIJIT CHATTERJEE Received on Thu Dec 16 2004 - 02:32:46 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US