script writing. objectives: definition of script writing types of script creating/modification and...
TRANSCRIPT
Chapter 3Script Writing
Objectives:Definition of script writingTypes of scriptCreating/Modification and running scriptExecution of scriptFundamental of ScriptSequential and conditional controlIteration process
Facts:Procedural language is called PL/SQLHighly structuredEmbedded languagePowerful exception handlingOther programs may call PL/SQL
3
Script writing:1. Unnamed Blocks2. Procedures3. Functions
4
PL/SQL Basic:Comments
-- (single line)/* */ (Multi line)Rem
5
PL/SQL Basic:• Identifiers
• Constant• Variables• Exceptions• Cursors• Functions/Procedures• Packages
6
Unnamed Blocks:[DECLARE]
[Declarations]BEGIN
[Execution Statements][NULL;]
END;/
7
Example:BEGIN
NULL;END;/
8
Declarations:Variable Type [NOT NULL] [:= | Default]
Value;
OR
Variable Type%TYPE;
9
Data Type:BOOLEANCHARCHARACTERSTRINGVARCHAR2NUMBERDECDECIMALFLOATINT
10
Data Type (More…)INTEGERSMALLINTREALBINARY_INTEGERPOSITIVEDATE
11
EXAMPLE:DECLARE
Is_True BOOLEAN;Flag BOOLEAN := FALSE;B_Date DATE;Today DATE := SYSDATE;Total INTEGER;Sum1 INTEGER := 20;Sum2 INTEGER DEFAULT 20;Credit INTEGER RANGE 10..200;Grade NUMBER(3, 2) NOT NULL :=1.00;A NUMBER :=Sum1 * 3;B B_Date%TYPE;S_ID Student.ID%TYPE;S_Rec Student%TYPE;
12
CONSTANTS:DECLARE
No_Days_Per_Year CONSTANTS INTEGER:=366;Max_No_Student CONSTANTS INTEGER:=22;Registered CONSTANTS BOOLEAN:=FALSE;I_Grade CONSTANTS CHAR := ‘I’;Grade CONSTANTS CHAR DEFAULT ‘o’;
13
NULL Value in Declaration:Max_No_Student INTEGER (4) NOT NULL :=
1000;Zipcode INTEGER NOT NULL :=
21532;
14
Example:DECLARE
TOTAL INTEGER; --?Total INTEGER; --?
BEGINTotal :=24; --Errors
END;/
15
Expression:**+, - (unary)*, /+,->, >=, =, <>, <=, IN, LIKE, IS NULLNOTANDOR
SYSDATE – B_Date/365; --?
16
Example:DECLARE
A INTEGER;B BOOLEAN;C INTEGER := 5;
BEGINA :=10;B := C+2 = A;
END;/
17
Load Data into Variables:DECLARE
Field1 Faculty.Name%TYPE;Field2 Faculty.ID%TYPE;Field3 Faculty.Salary%TYPE;
BEGINSELECT Name, ID, SalaryINTO Field1, Field2, Field3FROM FacultyWHERE ID=1111;DBMS_OUTPUT.PUT_LINE (‘Name: ’ || Field1 || ‘ ID: ’ || Field2);
END;/
18
Load Data into Variables:DECLARE
MyName Faculty.Name%TYPE;MySalary Faculty.Salary%TYPE;
BEGINSELECT Name, Salary, SSNINTO MyName, MySalaryFROM ID=11111;
DELETE FROM FacultyWHERE Name = MyName;
END;/
19
Conditional Statement:One way Selection: IF condition THEN
action ;END IF;
Two way Selection: IF condition THEN
action_1; ELSE
action_2;END IF;
20
Conditional Statement:Multiple way Selection:
IF condition THENaction_1;
ELSIF condition THENaction_2;
……ELSE
action_3 END IF;
21
Example:DECLARE
a NUMBER(2) := 22;b NUMBER(2) :=44;c VARCHAR2 (20);
BEGINIF a IS NULL OR b IS NULL THEN
c:=‘Empty’;END IF;IF a>=b THEN
c:=‘a is the largest’;ELSE
c:=‘a is the smallest’;END IF;DBMS_OUTPUT.PUT_LINE(c);
END;/
22
ExampleDECLARE
Score NUMBER;Grade CHAR(1);
BEGIN……..………IF Score>=90 THEN
Grade :=‘A’;ELSIF Score>=80 THEN
Grade: =‘B’;ELSIF Score>=70 THEN
Grade:=‘C’;ELSE
Grade :=‘F’;END IF;DBMS_OUTPUT.PUT_LINE(Grade);
END;/
23
Simple Iteration:LOOP
statements;END LOOP;
24
Example:DECLARE
i BINARY_INTEGER :=0;Num NUMBER:=4;
BEGINLOOP
i:=i+1;Num := Num+2;IF i=5 THEN
EXIT;END IF;DBMS_OUTPUT.PUT_LINE(Num);
END LOOP;END;/
25
WHILE LOOP:WHILE condition LOOP
statement(s);END LOOP;
26
ExampleDECLARE
i BINARY_INTEGER :=0;Num NUMBER:=4;
BEGINWHILE i<>5 LOOP
Num := Num+2;i:=i+1;
END LOOP;DBMS_OUTPUT.PUT_LINE(Num);
END;/
27
FOR LOOP:FOR index IN[REVERSE] exp..exp LOOP
statement(s);END LOOP;
28
ExampleDECLARE
i BINARY_INTEGER ;BEGIN
FOR i IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE(i);
END LOOP;END;/
29
Example – REVERSE:DECLARE
i BINARY_INTEGER ;BEGIN
FOR i IN REVERSE 1..5 LOOP DBMS_OUTPUT.PUT_LINE(i);
END LOOP;END;/
30