0% found this document useful (0 votes)
28 views7 pages

Oracle Core PL SQL Commads and Guidance

Uploaded by

bc210423485msi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views7 pages

Oracle Core PL SQL Commads and Guidance

Uploaded by

bc210423485msi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

PL/SQL Course: From Beginner to Advanced

This course is designed to guide you through PL/SQL, from the basics to advanced topics. Each
module contains explanations and example queries to reinforce learning.

Module 1: Introduction to PL/SQL


1.1 What is PL/SQL?

 Explanation: PL/SQL (Procedural Language/Structured Query Language) is Oracle's


procedural extension to SQL. It allows you to write code in a procedural format, making
SQL more powerful with features like loops, conditions, and exception handling.

1.2 Structure of a PL/SQL Block

 Explanation: A PL/SQL program is made up of blocks. Each block can contain multiple
statements and has three sections:
1. Declaration Section (optional): Declare variables, constants, etc.
2. Execution Section (mandatory): The main logic of the block is placed here.
3. Exception Section (optional): Handle exceptions or errors that occur during
execution.
 Query:

DECLARE
v_message VARCHAR2(50);
BEGIN
v_message := 'Hello, PL/SQL!';
DBMS_OUTPUT.PUT_LINE(v_message);
END;
/

Module 2: Variables and Data Types


2.1 Declaring Variables

 Explanation: Variables are used to store data. PL/SQL supports various data types like
NUMBER, VARCHAR2, DATE, etc.
 Query:

DECLARE
v_name VARCHAR2(30);
v_age NUMBER(3);
BEGIN
v_name := 'John Doe';
v_age := 28;
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name);
DBMS_OUTPUT.PUT_LINE('Age: ' || v_age);
END;
/

2.2 Constants

 Explanation: Constants are similar to variables but their values cannot be changed once
set.
 Query:

DECLARE
c_tax_rate CONSTANT NUMBER := 0.05;
v_income NUMBER := 10000;
v_tax NUMBER;
BEGIN
v_tax := v_income * c_tax_rate;
DBMS_OUTPUT.PUT_LINE('Tax: ' || v_tax);
END;
/

Module 3: Control Structures


3.1 Conditional Statements (IF-THEN-ELSE)

 Explanation: Control the flow of execution using conditions.


 Query:

DECLARE
v_score NUMBER := 85;
BEGIN
IF v_score >= 90 THEN
DBMS_OUTPUT.PUT_LINE('Grade: A');
ELSIF v_score >= 80 THEN
DBMS_OUTPUT.PUT_LINE('Grade: B');
ELSE
DBMS_OUTPUT.PUT_LINE('Grade: C');
END IF;
END;
/

3.2 Loops

 Explanation: Loops allow you to execute a block of code multiple times.


 Query (Simple Loop):

DECLARE
v_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
v_counter := v_counter + 1;
EXIT WHEN v_counter > 5;
END LOOP;
END;
/

 Query (For Loop):

BEGIN
FOR v_counter IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('Counter: ' || v_counter);
END LOOP;
END;
/

Module 4: Exception Handling


4.1 Types of Exceptions

 Explanation: PL/SQL has predefined exceptions like NO_DATA_FOUND,


TOO_MANY_ROWS, etc. You can also create custom exceptions.
 Query (Handling Predefined Exception):

DECLARE
v_name VARCHAR2(20);
BEGIN
SELECT name INTO v_name FROM employees WHERE employee_id = 999;
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Employee not found.');
END;
/

 Query (Custom Exception):

DECLARE
e_invalid_salary EXCEPTION;
v_salary NUMBER := -5000;
BEGIN
IF v_salary < 0 THEN
RAISE e_invalid_salary;
END IF;
EXCEPTION
WHEN e_invalid_salary THEN
DBMS_OUTPUT.PUT_LINE('Salary cannot be negative.');
END;
/
Module 5: Cursors
5.1 Implicit Cursors

 Explanation: Automatically created by Oracle when an SQL statement is executed.


 Query:

BEGIN
UPDATE employees SET salary = salary * 1.10 WHERE department_id = 10;
IF SQL%ROWCOUNT > 0 THEN
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' rows updated.');
END IF;
END;
/

5.2 Explicit Cursors

 Explanation: Explicit cursors are defined by the programmer for queries that return more
than one row.
 Query:

DECLARE
CURSOR emp_cursor IS SELECT employee_id, name FROM employees WHERE
department_id = 10;
v_emp_id employees.employee_id%TYPE;
v_name employees.name%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO v_emp_id, v_name;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || v_emp_id || ', Name: ' || v_name);
END LOOP;
CLOSE emp_cursor;
END;
/

Module 6: Procedures and Functions


6.1 Creating Procedures

 Explanation: Procedures are subprograms that perform a specific action.


 Query:

CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS


BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name || '!');
END;
/
BEGIN
greet_user('Alice');
END;
/

6.2 Creating Functions

 Explanation: Functions are similar to procedures but they return a value.


 Query:

CREATE OR REPLACE FUNCTION calculate_bonus(p_salary IN NUMBER) RETURN NUMBER


IS
BEGIN
RETURN p_salary * 0.10;
END;
/

DECLARE
v_salary NUMBER := 50000;
v_bonus NUMBER;
BEGIN
v_bonus := calculate_bonus(v_salary);
DBMS_OUTPUT.PUT_LINE('Bonus: ' || v_bonus);
END;
/

Module 7: Packages
7.1 Creating Packages

 Explanation: A package is a collection of related procedures, functions, variables, and


other package constructs grouped together.
 Query:

CREATE OR REPLACE PACKAGE emp_pkg IS


PROCEDURE raise_salary(p_emp_id IN NUMBER, p_increase IN NUMBER);
FUNCTION get_salary(p_emp_id IN NUMBER) RETURN NUMBER;
END emp_pkg;
/

CREATE OR REPLACE PACKAGE BODY emp_pkg IS


PROCEDURE raise_salary(p_emp_id IN NUMBER, p_increase IN NUMBER) IS
BEGIN
UPDATE employees SET salary = salary + p_increase WHERE employee_id =
p_emp_id;
END raise_salary;

FUNCTION get_salary(p_emp_id IN NUMBER) RETURN NUMBER IS


v_salary NUMBER;
BEGIN
SELECT salary INTO v_salary FROM employees WHERE employee_id =
p_emp_id;
RETURN v_salary;
END get_salary;
END emp_pkg;
/

BEGIN
emp_pkg.raise_salary(101, 500);
DBMS_OUTPUT.PUT_LINE('Updated Salary: ' || emp_pkg.get_salary(101));
END;
/

Module 8: Triggers
8.1 Creating Triggers

 Explanation: Triggers are PL/SQL blocks that automatically execute in response to a


specific event on a table or view.
 Query:

CREATE OR REPLACE TRIGGER trg_before_insert


BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
:NEW.employee_id := employees_seq.NEXTVAL;
:NEW.hire_date := SYSDATE;
END;
/

Module 9: Advanced Topics


9.1 Dynamic SQL

 Explanation: Dynamic SQL allows you to build and execute SQL statements
dynamically at runtime.
 Query:

DECLARE
v_table_name VARCHAR2(30) := 'employees';
v_sql VARCHAR2(1000);
BEGIN
v_sql := 'SELECT COUNT(*) FROM ' || v_table_name;
EXECUTE IMMEDIATE v_sql INTO v_count;
DBMS_OUTPUT.PUT_LINE('Number of records: ' || v_count);
END;
/
9.2 Bulk Collect and FORALL

 Explanation: Bulk Collect allows you to fetch multiple rows into collections, and
FORALL is used to perform DML operations on those collections.
 Query:

DECLARE
TYPE t_emp_tab IS TABLE OF employees%ROWTYPE;
v_emp_tab t_emp_tab;
BEGIN
SELECT * BULK COLLECT INTO v_emp_tab FROM employees WHERE department_id =
10;

FORALL i IN v_emp_tab.FIRST..v_emp_tab.LAST
UPDATE employees SET salary = salary * 1.10 WHERE employee_id =
v_emp_tab(i).employee_id;
END;
/

This course should provide a comprehensive foundation in PL/SQL. Each module builds on the
previous one, ensuring that by the end, you have a strong understanding of both basic and
advanced PL/SQL concepts.

Would you like to delve deeper into any specific topic

You might also like