Beruflich Dokumente
Kultur Dokumente
DECLARE SELLING_PRICE NUMBER(10,2); BEGIN SELECT SELL_PRICE INTO SELLING _PRICE FROM PRODUCT_MASTER WHERE PRODUCT_NO=P00001; IF SELLING_PRICE < 500 THEN GOTO ADD_OLD_PRICE; ELSE DBMS_OUTPUT.PUT_LINE( CURRENT PRICE OF P00001 IS || SELLING_PRICE); END IF; <<ADD_OLD_PRICE> UPDATE PRODUCTMASTER SET SELL_PRICE =500 WHERE PRODUCTNO=P00001; DBMS_OUTPUT.PUT_LINE(THE NEW PRICE OF P00001 IS 500); 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 SQLS OPERATIONS AND IS CALLED CURSOR. THE DATA THAT IS STORED IN THE CURSOR IS CALLED THE ACTIVE DATA SET.
BEGIN UPDATE EMP SET SALARY=SALARY+(SALARY*0.15) WHERE EMPCODE=&EMPCODE; 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. CREATE OR REPLACE TRIGGER TRIGGERNAME BEFORE OR AFTER DELETE OR INSERT OR UPDATE ON TABLENAME FOR EACH ROW DECLARE <VARIABLE DECLARATION> <CONSTANT DECLARATION> BEGIN <PL/SQL> SUBPROGRAM BODY; EXCEPTION <EXCEPTION PL/SQL BLOCK> END; DROPING OF A TRIGGER: DROP TRIGGER TRIGGERNAME;
EXAMPLE: CREATE TRIGGER AUDITTRAIL AFTER UPDATE OR DELETE ON CLIENT_MASTER FOR EACH ROW DECLARE OPERATION VARCHAR2(10); CLIENNO VARCHAR2(10); NAME VARCHAR2(10); BAL_DUE NUMBER(10,2); BEGIN IF UPDATING THEN OPERATION:=UPDATE; END IF; IF DELETING THEN OPERATION:=DELETE; END IF; CLIENT_NO:= :OLD.CLIENT_NO; NAME:= :OLD.NAME; BAL_DUE:= :OLD.BAL_DUE; INSERT INTO AUDITCLIENT VALUES(CLIENT_NO,NAME,BAL_DUE,OPERATION,SYSDATE); END;
STORED PROCEDURES
CREATE OR REPLACE PROCEDURE PRODEURENAME (ARGUMENT {IN,OUT,INOUT} DATATYPE } {IS,AS} VARIABLE DECLARATION; CONSTANT DECLARATION; BEGIN PL/SQL SUBPROGRAM BODY; EXCEPTION EXCEPTION PL/SQL BLOCK; END;
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;