• No results found

Oracle Database 11g PL SQL Part I

N/A
N/A
Protected

Academic year: 2021

Share "Oracle Database 11g PL SQL Part I"

Copied!
31
0
0

Loading.... (view fulltext now)

Full text

(1)

Oracle Database 11g

PL SQL – Part I

(2)

Overview

What is PL/SQL?

PL/SQL is an extension to SQL with design features of programming languages.

Data manipulation and query statements are included within procedural units of code.

Benefits of PL/SQL:

Modularize program development

A procedural language with control structures

(3)

3

PL/SQL Block Structure

DECLARE (Optional)

Variables, constants, cursors, user defined exceptions

BEGIN (Mandatory) SQL statements

PL/SQL control statements EXCEPTION (Optional)

Actions to perform when errors occur END; (Mandatory)

(4)

Block Types

Anonymous Procedure Function

[DECLARE]

BEGIN

--statements [EXCEPTION]

END;

PROCEDURE name IS

BEGIN

--statements [EXCEPTION]

END;

FUNCTION name RETURN datatype IS

BEGIN

--statements RETURN value;

[EXCEPTION]

END;

(5)

5

Developing a Simple

PL/SQL Block

(6)

Handling Variables in PL/SQL

Declare and initialize variables within the

declaration section.

Assign new values to variables within the

executable section.

(7)

7

Declaring Variables and Constants: Syntax

Guidelines

Initialize constants designated as NOT NULL.

Initialize identifiers by using the assignment operator (:=) or by the DEFAULT reserved word.

Declare at most one identifier per line.

identifier [CONSTANT] datatype [NOT NULL]

[:= | DEFAULT expr];

(8)

Declaring Scalar Variables

Have no internal components.

Hold a single value.

Base Types:

BINARY_INTEGER

NUMBER [(precision, scale)]

CHAR [(maximum_length)]

VARCHAR2(maximum_length) DATE

BOOLEAN

(9)

9

Scalar Variable

Declarations: Examples

v_gender CHAR(1);

v_count BINARY_INTEGER := 0;

v_total_sal NUMBER(9) := 0;

v_order_date DATE := SYSDATE + 7;

c_tax_rate CONSTANT NUMBER(3,2) := 8.25;

v_valid BOOLEAN NOT NULL := TRUE;

(10)

Operators in PL/SQL: Examples

v_equal := (v_n1 = v_n2);

v_valid := (v_emp_id IS NOT NULL);

Set the value of a Boolean flag.

Validate an employee number if it contains a value.

(11)

11

Nested Blocks and Variable Scope

Statements can be nested wherever an executable statement is allowed.

Nested block becomes a statement.

Exception section can contain nested blocks.

Scope of an object is the region of the program that can refer to the object.

Identifier is visible in the regions in which you can reference the unqualified identifier.

A block can look up to the enclosing block.

A block cannot look down to enclosed blocks.

(12)

Nested Blocks and Variable Scope: Example

DECLARE

x BINARY_INTEGER;

BEGIN ...

DECLARE

y NUMBER;

BEGIN ...

END;

...

END;

Scope of y

Scope of x

(13)

13

Commenting Code

Comment code by

Prefixing the comment with two dashes (- -).

Placing the comment between /* and */.

Example ...

v_sal NUMBER (9,2);

BEGIN

/* Compute the annual salary based on the monthly salary input from the user */

v_sal := v_sal * 12;

END;

(14)

DataType Conversion

(15)

15

Datatype Conversion

Convert data to comparable datatypes.

Mixed datatypes can result in an error and affect performance.

Conversion functions:

TO_CHAR TO_DATE

TO_NUMBER

(16)

Datatype Conversion: Example

This statement produces a compile error.

To correct the error, the TO_CHAR conversion function is used.

v1 := USER||SYSDATE;

v1 := USER||TO_CHAR(SYSDATE);

(17)

17

%TYPE Attribute

(18)

The %TYPE Attribute

Declare a variable according to

Another previously declared variable.

A database column definition.

Prefix %TYPE with

The database table and column.

The previously declared variable name.

(19)

19

The %TYPE Attribute: Examples

Advantages of using the %TYPE attribute

The datatype of the underlying database column may be unknown.

The datatype of the underlying database column may change at runtime.

...

v_last_name emp.last_name%TYPE;

v_first_name emp.first_name%TYPE;

v_balance NUMBER(7);

v2_balance v_balance%TYPE := 10;

...

(20)

%ROWTYPE Attribute

(21)

21

The %ROWTYPE Attribute

Declare a variable according to a collection of columns in a database table or view.

Prefix %ROWTYPE with the database table or view.

Fields in the record take their names and data types from the columns of the table or view.

DECLARE

identifier reference%ROWTYPE;

Syntax:

DECLARE

Dept_record dept%ROWTYPE;

(22)

Advantages of Using %ROWTYPE

The number and data types of the underlying database columns may be unknown.

The number and data types of the underlying database column may change at run time.

The attribute is useful when retrieving a row

(23)

23

Interacting with the

Database

(24)

SQL Commands in PL/SQL

Extract a row of data from the database by using the SELECT command.

Make changes to rows in the database by using DML commands.

Control a transaction with COMMIT or ROLLBACK commands.

(25)

25

Retrieving Data: Syntax

Retrieve data from the database with SELECT.

INTO clause is required.

Exactly one row must be returned.

Full SELECT syntax is available.

SELECT select_list

INTO variable_name | record_name FROM table

WHERE condition;

(26)

Retrieving Data: Example

Retrieve the order date and the ship date for the specified order.

DECLARE

v1 orders.date_ordered%TYPE;

v2 orders.date_shipped%TYPE;

BEGIN

SELECT date_ordered, date_shipped INTO v1, v2

FROM orders

WHERE order_id = 102;

(27)

27

Retrieving Data: Example

Return the sum of the salaries for all employees in the specified department.

DECLARE

v_sum_salary emp.salary%TYPE;

BEGIN

SELECT SUM(salary) --group function INTO v_sum_salary

FROM emp

WHERE dept_id = 30;

END;

(28)

Retrieving Data: Example

Retrieve all information about the specified department

DECLARE

dept_record dept%ROWTYPE;

BEGIN

SELECT *

INTO dept_record --PL/SQL RECORD FROM dept

WHERE dept_id = 30;

(29)

29

SELECT Exceptions

SELECT statements in PL/SQL must retrieve exactly one row.

If zero or more than one row is retrieved, an exception is raised.

SELECT exceptions:

TOO_MANY_ROWS NO_DATA_FOUND

(30)

TOO_MANY_ROWS Exception: Example

Retrieve the order for customer number 208.

BEGIN

SELECT order_id INTO v1

FROM orders

WHERE customer_id = 208;

end;

(31)

31

NO_DATA_FOUND Exception: Example

Retrieve the order for customer number 999.

BEGIN

SELECT order_id INTO v1

FROM orders

WHERE customer_id = 999;

end;

NO_DATA_FOUND

References

Related documents

- If the takeoff is rejected after reaching a wheel speed of 90 knots, maximum braking is applied automatically when the forward thrust levers are retarded to IDLE..

Yearlong honors capstone course in poetry, fiction, and creative non-fiction.. Students write an honors thesis, which is a

Government’s rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted by the terms of the applicable Oracle license

Population weighted accessibility indicators: left, distance based; centre, business users generalised costs; right, economy users generalised costs.. Source:

This Oracle Database 11g: SQL Tuning Workshop Release 2 training assists database developers, DBAs and SQL developers in identifying and tuning inefficient SQL statements..

Use some of the Oracle supplied PL/SQL packages to generate screen output and file output Create anonymous PL/SQL blocks, functions, and procedures.. Declare

Identify the benefits of PL/SQL Subprograms Overview of the types of PL/SQL blocks Create a Simple Anonymous Block. How to generate output from a

Nanjing United Chemical Logistics Co., Ltd (UT) is a professional engaged in the third party logistics enterprises of chemical products, which has provide logistics services to