1. Trang chủ
  2. » Thể loại khác

P2 oracle PLSQL

99 21 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 99
Dung lượng 2,18 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nguyễn Thị Hải Bình Cấu trúc PL/SQL • Ngôn ngữ PL/SQL tổ chức các lệnh theo từng khối lệnh.. Nguyễn Thị Hải Bình Ví dụ 4 Ghi chú: Để câu lệnh DBMS_OUTPUT.PUTLINE hoạt động, thêm dòng lện

Trang 1

NGÔN NGỮ THỦ TỤC

PL/SQL

Trang 2

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

PL/SQL là gì?

• Procedural Language extensions to SQL (PLSQL)

• Kết hợp giữa SQL và các cấu trúc điều khiển, các thủtục (procedure), hàm (function), con trỏ (cursor), ngoại

lệ (exception) và các lệnh giao tác (transaction)

2

Trang 3

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc PL/SQL

• Ngôn ngữ PL/SQL tổ chức các lệnh theo từng khối lệnh

• Mỗi lệnh PL/SQL phải kết thúc bằng dấu ;

• Mỗi khối lệnh PL/SQL có thể chứa các khối lệnh con

• Khối lệnh bắt đầu bằng BEGIN và kết thúc bằng END

• Ghi chú: nếu thực thi khối lệnh PL/SQL trên sqlPlus thì phải thêm ký tự / sau

lệnh END

3

Trang 4

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ

4

Ghi chú: Để câu lệnh DBMS_OUTPUT.PUTLINE hoạt động, thêm

dòng lệnh SET SERVEROUTPUT ON; vào trước PL/SQL block

Trang 5

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Một số ký hiệu (Delimiter)

5

Trang 6

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Một số ký hiệu

6

Trang 7

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Một số ký hiệu

7

Trang 8

• The identifiers consist of a letter optionally followed bymore letters, numerals, dollar signs ($), underscores(_), and number signs (#) and should not exceed 30characters.

• Identifiers are not case-sensitive

8

Trang 11

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Kiểu dữ liệu

11

Trang 12

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Scalar Data Types and Subtypes

12

Trang 13

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Numeric Data Types and Subtypes

13

Data type Description

NUMERIC(n, m) Floating type with maximum precision

of 38 decimal digitsNUMBER(n, m) Fixed-point or floating-point number

with absolute value in range 1E-130 to 1.0E126

FLOAT

REAL

INTEGER

Trang 14

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Character Data Types and Subtypes

14

Data type Description

CHAR Fixed-length character string with

maximum size of 32,767 bytesVARCHAR2 Variable-length character string with

maximum size of 32,767 bytes

Trang 15

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Boolean Data Types

• The BOOLEAN data type stores logical values that are used in logical operations.

• The logical values are the Boolean values TRUE and FALSE and the value NULL.

• SQL has no data type equivalent to BOOLEAN Therefore, Boolean values cannot be used in:

• SQL statements

• Built-in SQL functions (such as TO_CHAR)

• PL/SQL functions invoked from SQL statements

15

Trang 16

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Datetime and Interval Types

16

Trang 17

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Large Object (LOB) Data Types

17

Trang 21

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Phạm vi tác dụng của biến

Biến cục bộ (Local variable)

• Được định nghĩa trong một khối lệnh con và không thểtruy cập được từ khối lệnh ngoài

Biến toàn cục (Global variable)

• Được định nghĩa ở khối lệnh ngoài cùng của chươngtrình hoặc trong package

21

Trang 22

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Phạm vi tác dụng của biến

22

Trang 23

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Phạm vi tác dụng của biến

23

Trang 26

26

Trang 28

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

%ROWTYPE

• %ROWTYPE cho phép khai báo một biến kiểu bản ghi

có cùng cấu trúc với một dòng dữ liệu trong một bảngCSDL hoặc cùng cấu trúc với một dòng dữ liệu trả về từmột biến con trỏ (cursor)

28

Trang 29

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

%ROWTYPE – Ví dụ

29

Trang 30

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Kiểu dữ liệu Record

• Kiểu dữ liệu do người dùng định nghĩa

30

Trang 31

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Kiểu dữ liệu RECORD

• Kiểu dữ liệu do người dùng định nghĩa

31

Trang 34

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Thứ tự ưu tiên của các phép toán

34

Trang 35

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ: tính chu vi, diện tích hình tròn

35

Trang 36

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc rẽ nhánh IF

36

Trang 37

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc rẽ nhánh IF

37

Trang 38

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc rẽ nhánh IF

38

Trang 39

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc rẽ nhánh CASE

39

Trang 40

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc rẽ nhánh CASE

40

Trang 41

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc rẽ nhánh CASE

41

Trang 42

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc lặp LOOP

42

Trang 43

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc lặp WHILE LOOP

43

Trang 44

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Cấu trúc lặp FOR LOOP

44

Trang 45

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

REVERSE trong cấu trúc FOR LOOP

45

Trang 46

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Gán nhãn cho cấu trúc lặp

46

Trang 47

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Các lệnh điều khiển cấu trúc lặp

47

Trang 48

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Kiểu dữ liệu TABLE

• Cho phép lưu trữ được nhiều phần tử

• Tương tự kiểu mảng trong các ngôn ngữ lập trình cócấu trúc nhưng có số phần tử không giới hạn

• Chỉ số của kiểu TABLE không nhất thiết liên tục

48

Trang 49

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Kiểu dữ liệu TABLE

49

Trang 50

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Các hàm của kiểu TABLE

50

Trang 54

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ

54

Trang 55

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Raising Exceptions (Kích hoạt ngoại lệ)

• Exceptions are raised by the database server

automatically whenever there is any internal database

error

• Exceptions can be raised explicitly by the programmer

by using the command RAISE.

55

Trang 56

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Raising Exceptions – Ví dụ

56

Trang 58

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Pre-defined Exceptions

58

Trang 59

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Pre-defined Exceptions

59

Trang 60

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Pre-defined Exceptions

60

Trang 61

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Pre-defined Exceptions

61

Trang 62

• Con trỏ tiềm ẩn (implicit cursor)

• Con trỏ tường minh (explicit cursor)

62

Trang 63

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Con trỏ tiềm ẩn (Implicit Cursors)

• Được tạo ra tự động khi một câu lệnh SQL được thựcthi

• Lập trình viên không thể điều khiển con trỏ tiềm ẩn

• Các câu lệnh SQL được thực hiện trong một con trỏtiềm ẩn:

Trang 64

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Con trỏ tiềm ẩn (Implicit Cursors)

• Con trỏ tiềm ẩn có các thuộc tính sau:

• Các thuộc tính được truy cập thông qua cú pháp:

SQL%ten_thuoc_tinh

64

Trang 65

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Con trỏ tiềm ẩn – Ví dụ

65

Trang 66

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Con trỏ tường minh (Explicit Cursors)

• Là con trỏ do người dùng (người lập trình) định nghĩa

để điều khiển vùng ngữ cảnh

• Con trỏ tường minh phải được khai báo trước khi sửdụng

• Các bước sử dụng con trỏ tường minh:

• Khai báo (Declare)

• Cấp phát bộ nhớ (OPEN)

• Lấy dữ liệu (FETCH)

• Thu hồi bộ nhớ (CLOSE)

66

Trang 67

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Con trỏ tường minh (Explicit Cursors)

67

Trang 68

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Thuộc tính của con trỏ tường minh

%NOTFOUND (đi kèm lệnh FETCH)

• Trả về TRUE nếu đã lấy đến dòng dữ liệu cuối cùng củacon trỏ

• Trả về FALSE nếu lệnh FETCH trả về ít nhất một dòng

%FOUND (đi kèm lệnh FETCH)

• Ngược với thuộc tính %NOTFOUND

%ROWCOUNT (đi kèm lệnh FETCH)

• Trả về số dòng đã được FETCH

%ISOPEN

68

Trang 69

• PL/SQL subprograms are named PL/SQL blocks that can

be invoked with a set of parameters

• PL/SQL provides two kinds of subprograms:

• Functions: these subprograms return a single value, mainly

used to compute and return a value.

• Procedures: these subprograms do not return a value

directly, mainly used to perform an action.

69

Trang 71

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ về thủ tục

71

Trang 72

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ về thủ tục

72

Trang 73

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Execute and Drop a Standalone Procedure

• A standalone procedure can be called in two ways:

• Using the EXECUTE keyword

• Calling the name of the procedure from a PL/SQL block

• To delete a procedure:

• DROP PROCEDURE procedure-name;

73

Trang 74

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Standalone Procedure – Ví dụ

74

Trang 76

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ về hàm

76

Trang 77

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Hàm đệ quy

77

Trang 78

• A package will have two mandatory parts:

• Package specification

• Package body or definition

78

Trang 79

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Package Specification

• The specification is the interface to the package.

• It just DECLARES the types, variables, constants, exceptions, cursors, and subprograms that can be referenced from outside the package.

• It contains all information about the content of the package, but excludes the code for the subprograms.

• All objects placed in the specification are called public objects.

• Any subprogram not in the package specification but coded in

the package body is called a private object.

79

Trang 80

• The CREATE PACKAGE BODY Statement is used forcreating the package body.

80

Trang 81

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Using the Package Elements

• Syntax to access the package elements (variable,procedures, or functions)

81

Trang 82

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Example: creating the package specification

82

Trang 83

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Example: creating the package body

83

Trang 84

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Example: Using the package

84

Trang 85

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

DBMS_OUTPUT

• The DBMS_OUTPUT is a built-in package that enables

you to display output, display debugging information,and send messages from PL/SQL blocks, subprograms,packages, and triggers

Trang 86

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ

86

Trang 87

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Ví dụ

87

Trang 88

• Triggers are, in fact, written to be executed in response

to any of the following events:

• A database manipulation (DML) statement (DELETE, INSERT,

• Triggers could be defined on the table, view, schema,

or database with which the event is associated

88

Trang 89

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Benefits of Triggers

• Generating some derived column values automatically

• Enforcing referential integrity

• Event logging and storing information on table access

• Auditing

• Synchronous replication of tables

• Imposing security authorizations

• Preventing invalid transactions

89

Trang 90

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Creating Triggers

90

would be executed The INSTEAD OF clause is used for creating trigger on a view.

specifies the DML operation.

that would be updated.

table associated with the trigger.

you to refer new and old values for various DML statements, like INSERT, UPDATE, and DELETE (Not available for table level triggers)

trigger, i.e., the trigger would be executed for each row being affected Otherwise the trigger will execute just once when the SQL statement is executed, which is called a table level trigger.

rows for which the trigger would fire This clause is valid only for row level triggers.

Trang 91

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Example

91

Trang 92

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Triggering a Trigger

92

Trang 93

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Example

93

Trang 94

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Example

94

Trang 96

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Example

96

Trang 97

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Correlation Names and Pseudorecords

• A trigger that fires at row level can access the data in

the row that it is processing by using correlation

names.

• Two default correlation names are OLD and NEW

• OLD and NEW are also called pseudorecords

table_name%ROWTYPE, where table_name is thename of the table on which the trigger is created

97

Trang 98

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

OLD and NEW pseudorecord field values

98

Trang 99

Công nghệ Oracle

GV Nguyễn Thị Hải Bình

Drop a trigger

99

Ngày đăng: 05/11/2019, 11:45

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w