Вы находитесь на странице: 1из 16

CONTROL STRUCTURES Conditional Statements:- It allows PL/SQL to perform actions based on condition.

There are three forms of IF statement i. If condition then Action; End if; If condition then Action 1; Else Action 2; End if; If condition then Action 1; Elsif; Action 2; Else Action 3; End if;

ii.

iii.

Examples: DECLARE A NUMBER:=10; B NUMBER:=30; BEGIN IF(A>B) THEN DBMS_OUTPUT.PUT_LINE('A IS GREATER'); ELSE DBMS_OUTPUT.PUT_LINE('B IS GREATER'); END IF; END; DECLARE A NUMBER:=30; B NUMBER:=40; C NUMBER:=50; BEGIN IF(A>B AND A>C) THEN DBMS_OUTPUT.PUT_LINE('A IS GREATER'); ELSIF (B>C) THEN DBMS_OUTPUT.PUT_LINE('B IS GREATER');

ELSE DBMS_OUTPUT.PUT_LINE('C IS GREATER'); END IF; END; DECLARE V_ENO NUMBER:=&ENO; V_J VARCHAR2(10); BEGIN SELECT JOB INTO V_J FROM EMP WHERE EMPNO=V_ENO; IF V_J='CLERK' THEN UPDATE EMP SET SAL=SAL+1000 WHERE EMPNO=V_ENO; COMMIT; DBMS_OUTPUT.PUT_LINE('SALARY HAS BEEN UPDATED SUCCESSFULLY'); ELSE DBMS_OUTPUT.PUT_LINE('SORRY NO UPDATION FOR OTHERS'); END IF; END; DECLARE V_ENO NUMBER:=&ENO; V_J VARCHAR2(10); BEGIN SELECT JOB INTO V_J FROM EMP WHERE EMPNO=V_ENO; IF V_J='CLERK' THEN UPDATE EMP SET SAL=SAL+100 WHERE EMPNO=V_ENO; ELSIF V_J='ANALYST' THEN UPDATE EMP SET SAL=SAL+200 WHERE EMPNO=V_ENO; ELSIF V_J='SALESMAN' THEN UPDATE EMP SET SAL=SAL+300 WHERE EMPNO=V_ENO; COMMIT; DBMS_OUTPUT.PUT_LINE('SALARY HAS BEEN UPDATED SUCCESSFULLY'); ELSE DBMS_OUTPUT.PUT_LINE('SORRY NO INCREMENT FOR OTHERS'); END IF; END; DECLARE V_HIREDATE DATE:='12-DEC-1980'; BEGIN IF MONTHS_BETWEEN(SYSDATE,V_HIREDATE)/12>5 THEN DBMS_OUTPUT.PUT_LINE('TRUE'); ELSE DBMS_OUTPUT.PUT_LINE('FALSE'); END IF;

END; DECLARE I BOOLEAN:=TRUE; J BOOLEAN:=TRUE; K BOOLEAN; BEGIN K:=XOR(I,J); IF K=TRUE THEN DBMS_OUTPUT.PUT_LINE('TRUE'); ELSE DBMS_OUTPUT.PUT_LINE('FALSE'); END IF; END;

Iterative Control Statements:


Loops repeat statements or a sequence of statements multiple times.There are three Loops types BASIC LOOP: It is used when a set of statements is to be executed atleast once before loop terminates.An exit statement has to be specified otherwise the loop get into infinite number of iteration.When the exit statement is satisfied process exits from the loop. SYNTAX: Initilise variable Loop Statement Exit when condition; Increment variable End loop; EXAMPLES: DECLARE V NUMBER:=1; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('ORACLE'); EXIT WHEN V>=6; V:=V+1; END LOOP; END;

DECLARE N NUMBER:=&N; V NUMBER:=1; RES NUMBER; BEGIN LOOP RES:=N*V; DBMS_OUTPUT.PUT_LINE(N||'*'||V||'='||RES); EXIT WHEN V>=10; V:=V+1; END LOOP; END;

FOR LOOP: It is used to execute a set of statements for a predetermined number of times,Iteration occurs between the start and end value. SYNTAX: For I in 1..n Loop Statement; End loop; EXAMPLES: BEGIN FOR I IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE('ORACLE'); END LOOP; END; DECLARE N NUMBER:=&N; RES NUMBER; BEGIN FOR I IN 1..10 LOOP RES:=N*I; DBMS_OUTPUT.PUT_LINE(N||'*'||I||'='||RES); END LOOP; END;

BEGIN FOR I IN 1..100 LOOP IF MOD(I,2)=0 THEN DBMS_OUTPUT.PUT_LINE(I); END IF; END LOOP; END; WHILE LOOP: While loop is used when a set of statement has to be executed as long as the condition is true.The condition is evaluated at the begining of each iteration.The iteration continues until the condition becomes false. SYNTAX Initiliase variable While condtion Loop Statement; Increment variable; End loop; EXAMPLES DECLARE N NUMBER:=1; BEGIN WHILE N<=5 LOOP DBMS_OUTPUT.PUT_LINE('ORACLE'); N:=N+1; END LOOP; END; DECLARE N NUMBER:=&N; V NUMBER:=1; RES NUMBER; BEGIN WHILE V<=10 LOOP RES:=N*V; DBMS_OUTPUT.PUT_LINE(N||'*'||V||'='||RES); V:=V+1;

END LOOP; END;

CURSORS
A cursor is a temporary work area created in a memory when a sql statement is executed.This temporary work area used to store the data retrieved from the database and manipulate this data.A cursor can hold more than one row but can process one row at a time.The set of row that a cursor hold is called as active set. There are two types of cursors Implicit cursors Explicit cursors IMPLICIT CURSORS: Implicit cursors are created by pl/sql implicitly for all DML operations and SQL select statements including the query which returns one row. EXPLICIT CURSORS: These are created when more than one row is executed.The cursor can hold more than one but can process one row ata a time.These are declared and named by the programmer.

SYNTAX: Create cursor_name is Select statement; Open cursor_name; Fetch cursor_name into [variable1..variable2]; Close cursor_name;

EXAMPLES: DECLARE CURSOR C1 IS SELECT * FROM DEPT; REC DEPT%ROWTYPE; BEGIN OPEN C1; LOOP FETCH C1 INTO REC; EXIT WHEN C1%NOTFOUND; DBMS_OUTPUT.PUT_LINE(REC.DEPTNO||' '||REC.DNAME||' '||REC.LOC); END LOOP; CLOSE C1; IF C1%ISOPEN THEN DBMS_OUTPUT.PUT_LINE('CURSOR IS OPEN'); END IF; END; DECLARE CURSOR C2 IS SELECT * FROM EMP; REC EMP%ROWTYPE; BEGIN OPEN C2; LOOP

FETCH C2 INTO REC; EXIT WHEN C2%ROWCOUNT>=5; DBMS_OUTPUT.PUT_LINE(REC.EMPNO||' '||REC.ENAME||' '||REC.SAL||' '||REC.JOB||' '||REC.DEPTNO); END LOOP; CLOSE C2; IF C2%ISOPEN THEN DBMS_OUTPUT.PUT_LINE('CURSOR IS OPEN'); END IF; END; DECLARE CURSOR C3 IS SELECT ENAME,JOB,DEPTNO FROM EMP; BEGIN FOR I IN C3 LOOP IF I.DEPTNO=&N THEN DBMS_OUTPUT.PUT_LINE('EMP NAME IS'||I.ENAME||' '||I.JOB||' '||I.JOB); END IF; END LOOP; END; BEGIN FOR I IN(SELECT ENAME,JOB,SAL,DEPTNO FROM EMP) LOOP IF I.DEPTNO=&N THEN DBMS_OUTPUT.PUT_LINE(I.ENAME||' '||I.JOB||' '||I.SAL); END IF; END LOOP; END;

EXCEPTION HANDLING
It is an identifier in pl/sql that is raised during execution and also called as runtime error.It is raised when an oracle error occurs or can raise explicitly.There are three types of exception

Some of the predefined exceptions are:

Syntax of predefined exception: Begin Exception when no_data_found then Statement 1; When too_many_rows then Statement 1; When others then

Statement1; Statement 2; EXAMPLES: DECLARE V_EN VARCHAR2(10); BEGIN SELECT ENAME INTO V_EN FROM EMP WHERE EMPNO=&N; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('PLEASE CHECK THE EMPNO'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('APPLICATON ERROR'); END; EXAMPLES: USER DEFINED EXCEPTION DECLARE V_COMM NUMBER; V_EXC EXCEPTION; BEGIN SELECT COMM INTO V_COMM FROM EMP WHERE EMPNO=&N; IF V_COMM IS NULL THEN RAISE V_EXC; ELSE DBMS_OUTPUT.PUT_LINE('THE COMM IS'||V_COMM); END IF; EXCEPTION WHEN V_EXC THEN DBMS_OUTPUT.PUT_LINE('THE COMM IS NULL'); END;

EXAMPLES: DECLARE V_COMM NUMBER; BEGIN SELECT COMM INTO V_COMM FROM EMP WHERE EMPNO=&N; IF V_COMM IS NULL THEN RAISE_APPLICATION_ERROR(-20000,'THE COMM IS NULL'); ELSE DBMS_OUTPUT.PUT_LINE('THE COMM IS '||V_COMM); END IF; END;

DECLARE V_COMM NUMBER; V_EXC EXCEPTION; BEGIN SELECT COMM INTO V_COMM FROM EMP WHERE EMPNO=&N; IF V_COMM IS NULL THEN RAISE V_EXC; ELSE DBMS_OUTPUT.PUT_LINE('THE COMM IS '||V_COMM); END IF; EXCEPTION WHEN V_EXC THEN RAISE_APPLICATION_ERROR(-20000,'THE COMM IS NULL'); END;

PROCEDURES
These are named PL/SQL blocks or sub programs.These are stored in database as database object for repeated execution Procedures can accept parameters Procedures may or may not return value,We can pass parameters in procedures in three way 1) IN-parameter:- Pass the value. 2) OUT-prameter:- Returns the value 3) IN-OUT parameter:- Pass and Return value Advantages: Modularity Reusability Maintaibility Extensibility Portability

Syntax: Create or replace procedure proc_name(parameter1 [mode],parameter 2[mode].); Is/as Begin . End;

EXAMPLES CREATE OR REPLACE PROCEDURE PROC1(ENO IN NUMBER) IS BEGIN UPDATE EMP SET SAL=SAL+100 WHERE EMPNO=ENO; DBMS_OUTPUT.PUT_LINE('SAL UPDATED SUCCESSFULLY'); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(PLEASE CHECK THE EMPNO);; WHEN OTHERS THEN RAISE; END PROC1; CREATE OR REPLACE PROCEDURE PROC2(ENO NUMBER,V_ENAME OUT VARCHAR2,V_SAL OUT VARCHAR2,V_DEPTNO OUT NUMBER) IS BEGIN SELECT ENAME,SAL,DEPTNO INTO V_ENAME,V_SAL,V_DEPTNO FROM EMP WHERE EMPNO=ENO; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(PLEASE CHECK THE EMPNO); WHEN OTHERS THEN CREATE OR REPLACE PROCEDURE PROC4(ENO NUMBER) IS V_J VARCHAR2(10); BEGIN SELECT JOB INTO V_J FROM EMP WHERE EMPNO=ENO; IF V_J='CLERK' THEN UPDATE EMP SET SAL=SAL+200 WHERE EMPNO=ENO; ELSIF V_J='SALESMAN' THEN UPDATE EMP SET SAL=SAL+400 WHERE EMPNO=ENO; COMMIT; DBMS_OUTPUT.PUT_LINE('SALARY HAS BEEN UPDATED SUCCESSFULLY'); ELSE DBMS_OUTPUT.PUT_LINE('NO UPDATION FOR OTHERS'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('PLEASE CHECK THE RECORD'); WHEN OTHERS THEN RAISE; END PROC4;

FUNCTIONS A function is a named PL/SQL block that returns a value.Function can be stored in a database as a database object for repeated execution.The difference between procedure and function is function returns a value and no DML operations are performed in functions.Functions are used to compute a value Syntax: Create or replace function function_name(parameter1 [mode1] datatype,parameter2[mode 2] datatype..); Return datatype; Is/as Begin . End;

Вам также может понравиться