PL SQL
Explanation:
Conditional excecution-if true conditions
Looping-for loop & while loop
Branching-switch cases
BLOCK STRUCTURES OF PLSQL
In declare block, we declare variables
Semicolon is important
TYPES OF BLOCKS
ANONYMOUS:
MEANS UNKNOWN;
WE ARE NOT NAMING THE BLOCK
PROCEDURE:
BLOCK IS NAMED
PROCEDURE
SP_GETALLDEPARTMENTS
IS
BEGIN
SELECT DEPARTMENT_ID,DEPARTMENT_NAME FROM
DEPARTMENTS;
END;
FUNCTION:
THERE MUST BE A RETURN VALUE;
SUFFIX FN-;
FUNCTION
FN_RETURN_AVG_SALARY
RETURN
NUMBER(10,2)
IS
BEGIN
SELECT AVG(SALARY) FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
RETURN AVG(SALARY)
[EXCEPTION]
END;
Set serveroutput on
DECLARE
v_val1 number(2);
v_val2 number(2);
v_sum number(3);
BEGIN
v_val:=60;
v_val2:=70;
v_sum:=v_val1 +- v_val2
dbms_output.put_line(‘total is’ || v_sum);
END;
/
PL SQL
In command line
o
o
o
o
o
o
Go to command prompt in menu->
type sqlplus->
ENTER USERNAME->
enter password->
scr clr->
o
o
o
HERE SERVER OUTPUT IS TURNED OFF AND NOT ON SO NO VALUE IS
DISPLAYED.
o
o
o
o
NOW IF WE DO THIS
o
o
o
o
o
THE ABOVE CODE CAN BE EDITED
IF ANY ERROR, TYPR ‘edit’ PRESS ENTER, THE CODE WILL BE IN A TEXT FILE,
WHICH WE CAN EDIT AND THEN SAVE AND EXIT.
THE EDITED CODE WILL BE IN THE COMMAND PROMPT AND THEN TYPE ‘/’
AND PRESS ENTER.
Password error:
If the password contains @ sybol, then you can logon in two ways. Either type ‘as
sysdba’ press enter type ‘ALTER USER user_name IDENTIFIED BY ‘new_password’
For when we want user to input the data for a function
Problem 1: Sum of two numbers
Datatypes
Scalar Datatypes:- means single value-fixed value-hard coded into the
code.
CHAR(size)- 32767 bytes and default size is 1
VARCHAR2(size)- no default size
LONG- max size upto 32760 bytes. Can be used to store values into
LONG type columns but cant be used to retrieve it.
LONGRAW-binary data upto 32760 bytes
BINARY INTEGER:2,147,483,647
DATE
Sql is not dynamic. That’s why we use pl sql. It is dynamic. As
devolopers, our aim should be to make a dynamic program.
Dynamic Datatypes:- means user inputs the value-dynamic coding
TASK:
SCENARIO:
Create a products table, then use %TYPE to check stock availability
based on user input
HINT
IF v_stock=0 THEN
DBMS_OUTPUT.PUT_LINE(‘OUT OF STOCK!’);
Elsif v_stock< 5 then
Dbms_output.put_line(‘Low stock! Reorder Soon’);
Else
DBMS_OUTPUT.PUT_LINE(‘IN STOCK’);
End if;
CREATE TABLE PRODUCTS(
ID NUMBER(3) PRIMARY KEY NOT NULL,
NAME VARCHAR2(20) NOT NULL,
STOCK NUMBER(4)
)
DECLARE
V_id PRODUCTS.ID%TYPE;
v_name PRODUCTS.NAME%TYPE;
v_stock PRODUCTS.STOCK%TYPE;
BEGIN
SELECT NAME,STOCK INTO v_name, v_stock
FROM PRODUCTS
WHERE ID=&V_ID;
IF v_stock=0 THEN
DBMS_OUTPUT.PUT_LINE(‘OUT OF STOCK!’);
Elsif v_stock< 5 then
Dbms_output.put_line(‘Low stock! Reorder Soon’);
Else
DBMS_OUTPUT.PUT_LINE(‘IN STOCK’);
End if;
INSERT INTO PRODUCTS(ID,NAME,STOCK)VALUES(2, ‘Colgate',200);
Wednesday, 18 June 2025
FOR LOOP
INCREMENTING
DECREMENTED
Procedure
STORED PARAMETERS
STORED PROCEDURE WITH PARAMETERS
SEARCH BY CUSTOMER ID
UPDATE CUSTOMERS
CREATE OR REPLACE PROCEDURE sp_update_customers(
c_id IN TbleCustomers.ID%TYPE,
v_name IN TbleCustomers.NAME%TYPE,
v_age IN TbleCustomers.AGE%TYPE,
v_address IN TbleCustomers.ADDRESS%TYPE,
v_salary IN TbleCustomers.SALARY%TYPE,
cust_rec OUT TbleCustomers%ROWTYPE
)
IS
BEGIN
SELECT * INTO cust_rec WHERE ID=c_id;
IF v_name IS NOT NULL THEN
INSERT INTO TbleCustmer(NAME) VALUE(v_name)
ELSE:
END;
/DELETE CUSTOMERS
DISPLAY ALL RECORDS