2SQL in PLSQL Control Structure and Loops
2SQL in PLSQL Control Structure and Loops
controls in PL/SQL
SQL Statements in PL/SQL
• Extract a row of data from the database by using the SELECT command.
• INSERT
• UPDATE
• DELETE
-2 Document Name
CONFIDENTIAL
Retrieving Data in PL/SQL
• Example
DECLARE
v_orderdate ord.orderdate%TYPE;
v_shipdate ord.shipdate%TYPE;
BEGIN
SELECT orderdate, shipdate
INTO v_orderdate, v_shipdate
FROM ord
WHERE id = 620;
...
END;
-3 Document Name
CONFIDENTIAL
Manipulating Data Using PL/SQL
INSERT
UPDATE
DELETE
-4 Document Name
CONFIDENTIAL
Updating and Deleting Data
• Increase the salary of all employees in the EMP table who are Analysts
Example:
DECLARE
v_sal_increase emp.sal%TYPE := 2000;
BEGIN
UPDATE emp
SET sal = sal + v_sal_increase
WHERE job = 'ANALYST';
END;
DECLARE
DECLARE
v_deptno
v_deptno emp.deptno%TYPE
emp.deptno%TYPE :=:= 10;
10;
BEGIN
BEGIN
DELETE
DELETE FROM
FROM emp
emp
WHERE
WHERE deptno
deptno == v_deptno;
v_deptno;
END;
END;
-5 Document Name
CONFIDENTIAL
Conditional Control
• The logical flow of statements can be changed using conditional IF
statements and loop control structures.
• Conditional IF statements:
• IF-THEN-END IF
• IF-THEN-ELSE-END IF
• IF-THEN-ELSIF-END IF
Syntax Example
IF
IF condition
condition THEN
THEN IF
IF V_DEPTNO
V_DEPTNO == 10
10 THEN
THEN
statements;
statements; V_JOB := 'SALESMAN';
V_JOB := 'SALESMAN';
[ELSIF
[ELSIF condition
condition THEN
THEN ELSIF
ELSIF V_DEPTNO
V_DEPTNO == 2020 THEN
THEN
statements;]
statements;] V_JOB
V_JOB :=
:= ‘EXECUTIVE';
‘EXECUTIVE';
[ELSE
[ELSE ELSE
ELSE
statements;]
statements;] V_JOB
V_JOB :=
:= ‘MANAGER';
‘MANAGER';
END
END IF;
IF; END IF;
END IF;
-6 Document Name
CONFIDENTIAL
Iterative Control
• Loop types:
• Simple loop
• FOR loop
• WHILE loop
-7 Document Name
CONFIDENTIAL
Simple Basic Loop
Syntax
LOOP -- delimiter
statement1; -- statements
. . .
EXIT [WHEN condition]; -- EXIT statement
END LOOP; -- delimiter
Example
DECLARE
v_ordid item.ordid%TYPE := 100;
BEGIN
FOR i IN 1..10 LOOP
INSERT INTO item(ordid, itemid)
VALUES(v_ordid, i);
END LOOP;
END;
-8 Document Name
CONFIDENTIAL
Numeric FOR Loop
• Syntax
Example
BEGIN
FOR i IN REVERSE 21…30 LOOP
INSERT INTO EMP_CNT(CNT)VALUES (i);
END LOOP;
END;
-9 Document Name
CONFIDENTIAL
WHILE Loop
DECLARE
ctr NUMBER (3) := 0;
BEGIN
WHILE ctr < 500 LOOP
INSERT INTO temp(message)
VALUES (‘Data inserted successfully’);
ctr := ctr +1 ;
END LOOP;
END;
-
10 Document Name
CONFIDENTIAL
Thank You