Professional Documents
Culture Documents
Dmbs Triggers
Dmbs Triggers
DECLARE
SELLING_PRICE NUMBER(10,2);
BEGIN
SELECT SELL_PRICE INTO SELLING _PRICE FROM PRODUCT_MASTER WHERE
PRODUCT_NO=‘P00001’;
<<ADD_OLD_PRICE>
UPDATE PRODUCTMASTER SET SELL_PRICE =500 WHERE PRODUCTNO=‘P00001’;
DBMS_OUTPUT.PUT_LINE(‘THE NEW PRICE OF P00001 IS 500’);
END;
EXAMPLE USING IF:
DECLARE
ACCT_BAL NUMBER(11,2);
ACCT CONSTANT NUMBER(5):=3;
DEBIT_AMT NUMBER(5):=2000;
MIN_BAL CONSTANT NUMBER(7):=1000;
BEGIN
SELECT BAL INTO ACCT_BAL FROM ACCOUTNS WHERE ACOUNT_ID=ACC;
END;
ERROR HANDLING IN PL/SQL
PRE-DEFINED EXCEPTION HANDLERS:
DECLARE
SMANNO SALESMANMASTER.SALESMANNO%TYPE;
SALESAMT NUMBER(10);
TARGETSALES SALESMANMASTER.SALESMANNO%TYPE;
BEGIN
SMANNO:=&SMANNO;
SELECT SALESAMOUNT INTO SALESAMT FROM SALESMASTER
WHERE SALESMANNO=&SMANNO;
INERT INTO SALESMANPROGRESS VALUES(SMANNO,SYSDATE,SALESAMT);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(‘SALESMAN NO’ || SMANNO|| ‘IS NOT PRESENT IN THE
SALESMASTER TABLE’);
END;
USER DEFINED EXCEPTIONS
DECLARE
LESS_THAN_TARGET EXCEPTION;
SMANNO SALESMANMASTER.SALESMAN_NO%TYPE;
COMM_RATE SALESMANMASTER.SALESMAN_NO%TYPE;
BEGIN
SELECT SALESMANNO,COMMISSIONRATE INTO SMANNO,COMM_RATE FROM
SALESMANMASTER WHERE SALESMANNO=&SMANNO;
EXCEPTION
WHEN LESS_TEHN_TARGERT THEN
DBMS_OUTPUT.PUT_LINE(SALESMANNO’||SMANNO|| ‘IS NOT ENTITLED TO GET THE
COMMISSION’);
END;
CURSORS
THE ORACLE ENGINE USES A WORK AREA FOR ITS INTERNAL PROCESSING IN ORDER TO
EXECUTE AN SQL STATEMENT.THIS WORK AREA IS PRIVATE TO SQL’S OPERATIONS AND
IS CALLED CURSOR.
THE DATA THAT IS STORED IN THE CURSOR IS CALLED THE ACTIVE DATA SET.
IMPLICIT CURSORS
EXPLICIT CURSORS
BEGIN
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE(‘EMPLOYEE RECORD MODIFIED SUCCESSFULLY’);
END IF;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE(‘EMPLOYEE NUMBER:DOES NOT EXIST’);
END IF;
END;
CURSOR,OPEN,FETCH,CLOSE
DECLARE
CURSOR CEMP IS SELECT EMPCODE,SALARY FROM EMPLOYEE WHERE
DEPTNO=20;
ECODE1 EMPLOYEE.EMPCODE%TYPE;
SAL EMPLOYEE.SALARY%TYPE;
BEGIN
OPEN CEMP;
LOOP
FETCH CEMP INTO ECODE1,SAL;
UPDATE EMPLOYEE SET SALARY-SAL+(SL*0.5) WHERE EMPCODE=ECODE1;
INSERT INTO EMP_RAISE VALUES(ECODE1,SYSDATE,SAL*0.05);
END LOOP;
COMMIT;
CLOSE CEMP;
END;
TRIGGERS
DATABASE TRIGGERS ARE PROCEDURES THAT ARE STORED IN THE DATABASE AND
ARE FIRED WHEN THE CONTENTS OF A TABLE ARE CHANGED.
DROPING OF A TRIGGER:
FUNCTIONS
CREATE OR REPLACE FUNCTION FUNCTIONAME (ARGUMENT {IN} RETURN
DATATYPE } {IS,AS}
VARIABLE DECLARATION;
CONSTANT DECLARATION;
BEGIN
PL/SQL SUBPROGRAM BODY;
EXCEPTION
EXCEPTION PL/SQL BLOCK;
END;