Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the...
-
Upload
sabina-austin -
Category
Documents
-
view
223 -
download
0
Transcript of Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the...
![Page 1: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/1.jpg)
Introduction to PL/SQL
![Page 2: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/2.jpg)
Objectives
After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the benefits of PL/SQL Identify the different types of PL/SQL blocks Output messages in PL/SQL
![Page 3: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/3.jpg)
About PL/SQL
PL/SQL: Stands for “Procedural Language extension to SQL” Is Oracle Corporation’s standard data access language
for relational databases Seamlessly integrates procedural constructs with SQL
![Page 4: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/4.jpg)
About PL/SQL
PL/SQL: Provides a block structure for executable units of
code. Maintenance of code is made easier with such a well-defined structure.
Provides procedural constructs such as: Variables, constants, and data types Control structures such as conditional statements and
loops Reusable program units that are written once and
executed many times
![Page 5: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/5.jpg)
PL/SQL Environment
PL/SQL engine
Oracle database server
SQL statement executor
Procedural statement executor
procedural
SQL
PL/SQLblock
![Page 6: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/6.jpg)
Benefits of PL/SQL Integration of procedural constructs with SQL Improved performance
SQLIF...THEN
SQLELSE
SQLEND IF;SQL
SQL 1
SQL 2…
![Page 7: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/7.jpg)
Benefits of PL/SQL
Modularized program development Integration with Oracle tools Portability Exception handling
![Page 8: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/8.jpg)
PL/SQL Block Structure
DECLARE (optional) Variables, cursors, user-defined exceptions
BEGIN (mandatory) SQL statements PL/SQL statements
EXCEPTION (optional) Actions to perform
when errors occur END; (mandatory)
![Page 9: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/9.jpg)
Block Types
Anonymous Procedure Function
[DECLARE]
BEGIN --statements
[EXCEPTION]
END;
PROCEDURE nameIS
BEGIN --statements
[EXCEPTION]
END;
FUNCTION nameRETURN datatypeISBEGIN --statements RETURN value;[EXCEPTION]
END;
![Page 10: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/10.jpg)
Program Constructs
Application triggers
Application packages
Application proceduresor functions
Anonymous blocks
Tools Constructs
Object types
Database triggers
Stored packages
Stored procedures orfunctions
Anonymous blocks
Database ServerConstructs
Object types
![Page 11: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/11.jpg)
Create an Anonymous Block
Enter the anonymous block in the SQL Developer workspace:
![Page 12: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/12.jpg)
Execute an Anonymous Block
Click the Run Script button to execute the anonymous block:
Run Script
![Page 13: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/13.jpg)
Test the Output of a PL/SQL Block
Enable output in SQL Developer by clicking the Enable DBMS Output button on the DBMS Output tab:
Use a predefined Oracle package and its procedure: DBMS_OUTPUT.PUT_LINE
DBMS_OUTPUT.PUT_LINE(' The First Name of the Employee is ' || f_name);…
Enable DBMS Output
DBMS Output Tab
![Page 14: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/14.jpg)
Test the Output of a PL/SQL Block
![Page 15: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/15.jpg)
Declaring PL/SQL Variables
![Page 16: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/16.jpg)
Objectives
After completing this lesson, you should be able to do the following: Recognize valid and invalid identifiers List the uses of variables Declare and initialize variables List and describe various data types Identify the benefits of using the %TYPE attribute Declare, use, and print bind variables
![Page 17: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/17.jpg)
Use of Variables
Variables can be used for: Temporary storage of data Manipulation of stored values Reusability
SELECT first_name, department_id INTO v_fname,v_deptnoFROM …
v_fname
v_deptno
Jennifer
10
![Page 18: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/18.jpg)
Requirements for Variable Names
A variable name: Must start with a letter Can include letters or numbers Can include special characters (such as $, _, and # ) Must contain no more than 30 characters Must not include reserved words
![Page 19: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/19.jpg)
Handling Variables in PL/SQL Variables are:
Declared and initialized in the declarative section Used and assigned new values in the executable
section Passed as parameters to PL/SQL subprograms Used to hold the output of a PL/SQL subprogram
![Page 20: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/20.jpg)
Declaring and Initializing PL/SQL Variables
Syntax:
Examples:
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
DECLARE v_hiredate DATE; v_deptno NUMBER(2) NOT NULL := 10; v_location VARCHAR2(13) := 'Atlanta'; c_comm CONSTANT NUMBER := 1400;
![Page 21: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/21.jpg)
Declaring and Initializing PL/SQL Variables
DECLARE v_myName VARCHAR2(20);BEGIN DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName); v_myName := 'John'; DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName);END;/
DECLARE v_myName VARCHAR2(20):= 'John';BEGIN v_myName := 'Steven'; DBMS_OUTPUT.PUT_LINE('My name is: '|| v_myName);END; /
1
2
![Page 22: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/22.jpg)
Delimiters in String Literals
DECLARE v_event VARCHAR2(15);BEGIN v_event := q'!Father's day!'; DBMS_OUTPUT.PUT_LINE('3rd Sunday in June is : '|| v_event ); v_event := q'[Mother's day]'; DBMS_OUTPUT.PUT_LINE('2nd Sunday in May is : '|| v_event );END;/
![Page 23: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/23.jpg)
Types of Variables PL/SQL variables:
Scalar Composite Reference Large object (LOB)
Non-PL/SQL variables: Bind variables
![Page 24: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/24.jpg)
TRUE
Types of Variables
25-JAN-01
Atlanta256120.08
Snow WhiteLong, long ago,
in a land far, far away, there lived a princess called
Snow White. . .
![Page 25: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/25.jpg)
Guidelines for Declaring and InitializingPL/SQL Variables
Follow naming conventions. Use meaningful identifiers for variables. Initialize variables designated as NOT NULL and CONSTANT.
Initialize variables with the assignment operator (:=) or the DEFAULT keyword:
Declare one identifier per line for better readability and code maintenance.
v_myName VARCHAR2(20):='John';
v_myName VARCHAR2(20) DEFAULT 'John';
![Page 26: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/26.jpg)
Guidelines for Declaring PL/SQL Variables
Avoid using column names as identifiers.
Use the NOT NULL constraint when the variable must hold a value.
DECLARE employee_id NUMBER(6);BEGIN SELECT employee_id INTO employee_id FROM employees WHERE last_name = 'Kochhar';END;/
![Page 27: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/27.jpg)
Scalar Data Types Hold a single value Have no internal components
Atlanta
TRUE 25-JAN-01
256120.08
The soul of the lazy man desires, and he has nothing; but the soul of the diligent
shall be made rich.
![Page 28: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/28.jpg)
Base Scalar Data Types
CHAR [(maximum_length)] VARCHAR2 (maximum_length) NUMBER [(precision, scale)] BINARY_INTEGER PLS_INTEGER BOOLEAN BINARY_FLOAT BINARY_DOUBLE
![Page 29: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/29.jpg)
Base Scalar Data Types
DATE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND
![Page 30: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/30.jpg)
Declaring Scalar Variables
Examples:DECLARE v_emp_job VARCHAR2(9); v_count_loop BINARY_INTEGER := 0; v_dept_total_sal NUMBER(9,2) := 0; v_orderdate DATE := SYSDATE + 7; c_tax_rate CONSTANT NUMBER(3,2) := 8.25; v_valid BOOLEAN NOT NULL := TRUE; ...
![Page 31: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/31.jpg)
%TYPE Attribute
Is used to declare a variable according to: A database column definition Another declared variable
Is prefixed with: The database table and column The name of the declared variable
![Page 32: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/32.jpg)
Declaring Variables with the %TYPE Attribute
Syntax
Examples... emp_lname employees.last_name%TYPE;...
identifier table.column_name%TYPE;
... balance NUMBER(7,2); min_balance balance%TYPE := 1000;...
![Page 33: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/33.jpg)
Declaring Boolean Variables
Only the TRUE, FALSE, and NULL values can be assigned to a Boolean variable.
Conditional expressions use the logical operators AND and OR and the unary operator NOT to check the variable values.
The variables always yield TRUE, FALSE, or NULL. Arithmetic, character, and date expressions can be used
to return a Boolean value.
![Page 34: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/34.jpg)
Bind Variables
Bind variables are: Created in the environment Also called host variables Created with the VARIABLE keyword Used in SQL statements and PL/SQL blocks Accessed even after the PL/SQL block is executed Referenced with a preceding colon
![Page 35: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/35.jpg)
Printing Bind Variables
Example:
VARIABLE b_emp_salary NUMBERBEGIN SELECT salary INTO :b_emp_salary FROM employees WHERE employee_id = 178; END;/PRINT b_emp_salarySELECT first_name, last_name FROM employees WHERE salary=:b_emp_salary;
![Page 36: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/36.jpg)
Printing Bind Variables
Example:VARIABLE b_emp_salary NUMBERSET AUTOPRINT ONDECLARE v_empno NUMBER(6):=&empno;BEGIN SELECT salary INTO :b_emp_salary FROM employees WHERE employee_id = v_empno; END;
7000
Output:
![Page 37: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/37.jpg)
LOB Data Type Variables
Book(CLOB)
Photo(BLOB)
Movie(BFILE)
NCLOB
![Page 38: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/38.jpg)
Composite Data Types
TRUE 23-DEC-98 ATLANTA
1 5000
2 2345
3 12
4 3456
1 SMITH
2 JONES
3 NANCY
4 TIM
PL/SQL table structure PL/SQL table structure
PLS_INTEGER
VARCHAR2
PLS_INTEGER
NUMBER
![Page 39: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/39.jpg)
Writing Executable Statements
![Page 40: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/40.jpg)
Objectives
After completing this lesson, you should be able to do the following: Identify lexical units in a PL/SQL block Use built-in SQL functions in PL/SQL Describe when implicit conversions take place and
when explicit conversions have to be dealt with Write nested blocks and qualify variables with
labels Write readable code with appropriate indentation Use sequences in PL/SQL expressions
![Page 41: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/41.jpg)
Lexical Units in a PL/SQL Block
Lexical units: Are building blocks of any PL/SQL block Are sequences of characters including letters,
numerals, tabs, spaces, returns, and symbols Can be classified as:
Identifiers: v_fname, c_percent Delimiters: ; , +, - Literals: John, 428, True Comments: --, /* */
![Page 42: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/42.jpg)
PL/SQL Block Syntax and Guidelines Literals
Character and date literals must be enclosed in single quotation marks.
Numbers can be simple values or in scientific notation.
Statements can span several lines.name := 'Henderson';
1
2
3
![Page 43: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/43.jpg)
Commenting Code
Prefix single-line comments with two hyphens (--).
Place multiple-line comments between the symbols /* and */.
Example:DECLARE...v_annual_sal NUMBER (9,2);BEGIN /* Compute the annual salary based on the monthly salary input from the user */v_annual_sal := monthly_sal * 12;--The following line displays the annual salary DBMS_OUTPUT.PUT_LINE(v_annual_sal);END;/
![Page 44: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/44.jpg)
SQL Functions in PL/SQL
Available in procedural statements: Single-row functions
Not available in procedural statements: DECODE Group functions
![Page 45: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/45.jpg)
SQL Functions in PL/SQL: Examples
Get the length of a string:
Get the number of months an employee has worked:
v_desc_size INTEGER(5);v_prod_description VARCHAR2(70):='You can use this product with your radios for higher frequency';
-- get the length of the string in prod_descriptionv_desc_size:= LENGTH(prod_description);
v_tenure:= MONTHS_BETWEEN (CURRENT_DATE, v_hiredate);
![Page 46: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/46.jpg)
Using Sequences in PL/SQL Expressions
Starting in 11g:
Before 11g:
DECLARE v_new_id NUMBER;BEGIN SELECT my_seq.NEXTVAL INTO v_new_id FROM Dual;END;/
DECLARE v_new_id NUMBER;BEGIN v_new_id := my_seq.NEXTVAL;END;/
![Page 47: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/47.jpg)
Data Type Conversion
Converts data to comparable data types Is of two types:
Implicit conversion Explicit conversion
Functions: TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP
![Page 48: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/48.jpg)
Data Type Conversion
date_of_joining DATE:= '02-Feb-2000';
date_of_joining DATE:= 'February 02,2000';
date_of_joining DATE:= TO_DATE('February 02,2000','Month DD, YYYY');
1
2
3
![Page 49: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/49.jpg)
Nested Blocks
PL/SQL blocks can be nested. An executable section (BEGIN … END) can contain nested blocks.
An exception section can contain nested blocks.
![Page 50: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/50.jpg)
Nested Blocks
Example: DECLARE v_outer_variable VARCHAR2(20):='GLOBAL
VARIABLE'; BEGIN DECLARE v_inner_variable VARCHAR2(20):='LOCAL
VARIABLE'; BEGIN DBMS_OUTPUT.PUT_LINE(v_inner_variable); DBMS_OUTPUT.PUT_LINE(v_outer_variable); END; DBMS_OUTPUT.PUT_LINE(v_outer_variable); END;
![Page 51: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/51.jpg)
Variable Scope and Visibility
DECLARE v_father_name VARCHAR2(20):='Patrick'; v_date_of_birth DATE:='20-Apr-1972'; BEGIN DECLARE v_child_name VARCHAR2(20):='Mike'; v_date_of_birth DATE:='12-Dec-2002'; BEGIN DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name); DBMS_OUTPUT.PUT_LINE('Date of Birth: '||
v_date_of_birth); DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name); END; DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth); END; /
1
2
![Page 52: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/52.jpg)
Qualify an Identifier
BEGIN <<outer>> DECLARE v_father_name VARCHAR2(20):='Patrick'; v_date_of_birth DATE:='20-Apr-1972'; BEGIN DECLARE v_child_name VARCHAR2(20):='Mike'; v_date_of_birth DATE:='12-Dec-2002'; BEGIN DBMS_OUTPUT.PUT_LINE('Father''s Name: '||v_father_name); DBMS_OUTPUT.PUT_LINE('Date of Birth: ' ||outer.v_date_of_birth); DBMS_OUTPUT.PUT_LINE('Child''s Name: '||v_child_name); DBMS_OUTPUT.PUT_LINE('Date of Birth: '||v_date_of_birth); END; END; END outer;
![Page 53: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/53.jpg)
Quiz: Determining Variable Scope
BEGIN <<outer>>DECLARE v_sal NUMBER(7,2) := 60000; v_comm NUMBER(7,2) := v_sal * 0.20; v_message VARCHAR2(255) := ' eligible for commission';BEGIN DECLARE v_sal NUMBER(7,2) := 50000; v_comm NUMBER(7,2) := 0; v_total_comp NUMBER(7,2) := v_sal + v_comm; BEGIN v_message := 'CLERK not'||v_message; outer.v_comm := v_sal * 0.30; END; v_message := 'SALESMAN'||v_message;END;END outer;/
1
2
![Page 54: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/54.jpg)
Operators in PL/SQL Logical Arithmetic Concatenation Parentheses to control order
of operations
Exponential operator (**)
Same as in SQL}
![Page 55: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/55.jpg)
Operators in PL/SQL: Examples
Increment the counter for a loop.
Set the value of a Boolean flag.
Validate whether an employee number contains a value.
loop_count := loop_count + 1;
good_sal := sal BETWEEN 50000 AND 150000;
valid := (empno IS NOT NULL);
![Page 56: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/56.jpg)
Programming Guidelines Make code maintenance easier by:
Documenting code with comments Developing a case convention for the code Developing naming conventions for identifiers and
other objects Enhancing readability by indenting
![Page 57: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/57.jpg)
Indenting Code
For clarity, indent each level of code.
BEGIN IF x=0 THEN y:=1; END IF;END;/
DECLARE deptno NUMBER(4); location_id NUMBER(4);BEGIN SELECT department_id, location_id INTO deptno,
location_id FROM departments WHERE department_name = 'Sales'; ...END;/
![Page 58: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/58.jpg)
Interacting with the Oracle Database Server
![Page 59: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/59.jpg)
Objectives
After completing this lesson, you should be able to do the following: Determine the SQL statements that can be
directly included in a PL/SQL executable block Manipulate data with DML statements in PL/SQL Use transaction control statements in PL/SQL Make use of the INTO clause to hold the values
returned by a SQL statement Differentiate between implicit cursors and explicit
cursors Use SQL cursor attributes
![Page 60: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/60.jpg)
SQL Statements in PL/SQL
Retrieve a row from the database by using the SELECT command.
Make changes to rows in the database by using DML commands.
Control a transaction with the COMMIT, ROLLBACK, or SAVEPOINT command.
![Page 61: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/61.jpg)
SELECT Statements in PL/SQL
Retrieve data from the database with a SELECT statement.
Syntax:
SELECT select_listINTO {variable_name[, variable_name]...
| record_name} FROM table[WHERE condition];
![Page 62: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/62.jpg)
SELECT Statements in PL/SQL
The INTO clause is required. Queries must return only one row.
Example:DECLARE v_fname VARCHAR2(25);BEGIN SELECT first_name INTO v_fname FROM employees WHERE employee_id=200; DBMS_OUTPUT.PUT_LINE(' First Name is : '||v_fname);END;/
![Page 63: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/63.jpg)
Retrieving Data in PL/SQL Retrieve hire_date and salary for the
specified employee.
Example:DECLARE v_emp_hiredate employees.hire_date%TYPE; v_emp_salary employees.salary%TYPE; BEGIN SELECT hire_date, salary INTO v_emp_hiredate, v_emp_salary FROM employees WHERE employee_id = 100; END;/
![Page 64: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/64.jpg)
DECLARE v_sum_sal NUMBER(10,2); v_deptno NUMBER NOT NULL := 60; BEGIN SELECT SUM(salary) -- group function INTO v_sum_sal FROM employees WHERE department_id = v_deptno; DBMS_OUTPUT.PUT_LINE ('The sum of salary is ' || v_sum_sal);END;
Retrieving Data in PL/SQL Return the sum of the salaries for all the
employees in the specified department. Example:
![Page 65: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/65.jpg)
Naming Conventions
DECLARE hire_date employees.hire_date%TYPE; sysdate hire_date%TYPE; employee_id employees.employee_id%TYPE := 176;
BEGIN SELECT hire_date, sysdate INTO hire_date, sysdate FROM employees WHERE employee_id = employee_id; END; /
![Page 66: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/66.jpg)
Naming Conventions
Use a naming convention to avoid ambiguity in the WHERE clause.
Avoid using database column names as identifiers. Syntax errors can arise because PL/SQL checks the
database first for a column in the table. The names of local variables and formal parameters
take precedence over the names of database tables. The names of database table columns take
precedence over the names of local variables.
![Page 67: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/67.jpg)
Using PL/SQL to Manipulate Data
Make changes to database tables by using DML commands: INSERT UPDATE DELETE MERGE
INSERT
UPDATE
DELETE
MERGE
![Page 68: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/68.jpg)
Inserting Data
Add new employee information to the EMPLOYEES table.
Example:BEGIN INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id, salary) VALUES(employees_seq.NEXTVAL, 'Ruth', 'Cores', 'RCORES',CURRENT_DATE, 'AD_ASST', 4000);END;/
![Page 69: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/69.jpg)
Updating Data
Increase the salary of all employees who are stock clerks.
Example:DECLARE sal_increase employees.salary%TYPE := 800; BEGIN UPDATE employees SET salary = salary + sal_increase WHERE job_id = 'ST_CLERK';END;/
![Page 70: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/70.jpg)
Deleting Data
Delete rows that belong to department 10 from the employees table.
Example:DECLARE deptno employees.department_id%TYPE := 10; BEGIN DELETE FROM employees WHERE department_id = deptno;END;/
![Page 71: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/71.jpg)
Merging Rows
Insert or update rows in the copy_emp table to match the employees table.BEGIN
MERGE INTO copy_emp c USING employees e ON (e.employee_id = c.empno) WHEN MATCHED THEN UPDATE SET c.first_name = e.first_name, c.last_name = e.last_name, c.email = e.email, . . . WHEN NOT MATCHED THEN INSERT VALUES(e.employee_id, e.first_name, e.last_name, . . .,e.department_id);END;/
![Page 72: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/72.jpg)
SQL Cursor
A cursor is a pointer to the private memory area allocated by the Oracle server.
A cursor is used to handle the result set of a SELECT statement.
There are two types of cursors: Implicit: Created and managed internally by the
Oracle server to process SQL statements Explicit: Declared explicitly by the programmer
![Page 73: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/73.jpg)
SQL Cursor Attributes for Implicit Cursors Using SQL cursor attributes, you can test the
outcome of your SQL statements.
SQL%FOUND Boolean attribute that evaluates to TRUE if the most recent SQL statement
returned at least one row
SQL%NOTFOUND
Boolean attribute that evaluates to TRUE if
the most recent SQL statement did notreturn even one row
SQL%ROWCOUNT
An integer value that represents the number of rows affected by the most
recent SQL statement
![Page 74: Introduction to PL/SQL. Objectives After completing this lesson, you should be able to do the following: Explain the need for PL/SQL Explain the.](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649f1f5503460f94c379b5/html5/thumbnails/74.jpg)
SQL Cursor Attributes for Implicit Cursors
Delete rows that have the specified employee ID from the employees table. Print the number of rows deleted.
Example:DECLARE v_rows_deleted VARCHAR2(30) v_empno employees.employee_id%TYPE := 176;BEGIN DELETE FROM employees WHERE employee_id = v_empno; v_rows_deleted := (SQL%ROWCOUNT || ' row deleted.'); DBMS_OUTPUT.PUT_LINE (v_rows_deleted);
END;