Bài giảng Cơ sở dữ liệu nâng cao - Chương 4: Lập trình PL/SQL - Nguyễn Thị Mỹ Dung

Bài giảng  
CƠ SỞ DỮ LIỆU  
NÂNG CAO  
Số tc: 2; LT: 20; Btập: 10  
GV: Nguyễn Thị Mỹ Dung  
Khối lớp: Đại học L2  
Chương 4: Lập trình PL/SQL  
1
NỘI DUNG MÔN HỌC  
1
Chương 1. Tổng quan CSDL phân tán (4)  
Chương 2. Tổng quan CSDL hướng đối tượng  
2
3
Chương 3. Cơ bản về Oracle (4)  
Chương 4: Lập trình PL/SQL (4)  
Chương 5: Procedure, Function (4)  
4
5
6
Chương 6: Thiết kế đối tượng (6)  
7
Chương 7: Truy vấn trong CSDL HĐT (4)  
Chương 4: Lập trình PL/SQL  
2
Chương 4: Lập trình PL/SQL  
I. Cấu trúc chương trình PL/SQL  
II. Các kiểu dữ liệu cơ bản của PL/SQL  
III. Các kiểu dữ liệu tham chiếu  
IV. Các loại mệnh đề  
V. Cấu trúc điều khiển  
VI. Kiểu con trỏ  
VII.Bài tập thực hành  
Chương 4: Lập trình PL/SQL  
3
I. Cấu trúc chương trình PL/SQL  
1. Giới thiệu  
PL/SQL (Procedural Language/Structured Query  
Language) là một ngôn ngữ lập trình lập trình hướng  
thủ tục sử dụng cho Oracle SQL.  
PL/SQL là sự kết hợp giữa SQL và các khai báo  
hằng số, biến, cấu trúc điều khiển, thủ tục, hàm, bẫy  
lỗi sự kiện, thao tác con trỏ, và xử lý giao tác…  
Mọi thứ được lưu trữ trong DB được tái sử dụng  
bởi các ứng dụng bất kỳ giao tiếp với ứng dụng  
Oracle.  
Từ phiên bản 8 trở về sau có thêm các tính năng  
hướng đối tượng.  
Chương 4: Lập trình PL/SQL  
4
Cấu trúc PL/SQL – giới thiệu(tt)  
- Mỗi lệnh SQL kết thúc bằng dấu chấm phẩy (;).  
- PL/SQL tổ chức theo từng khối lệnh (block), mỗi  
khối lệnh có thể lồng nhau. Các biến có thể khai báo  
nội (local) bên trong khối và điều khiển báo lỗi bên  
trong khối nơi lỗi phát sinh.  
- Một block bao gồm ba phần: phần khai báo là  
nơi để khai báo biến, phần thi hành lệnh và phần xử  
lý các ngoại lệ (điều kiện lỗi hoặc cảnh báo).  
- Khai báo biến trong PROCEDURE hay  
FUNCTION: nếu là Block ngoài cùng (đầu tiên) của  
PROCEDURE, FUNCTION thì không dùng từ khóa  
DECLARE (Ngược lại với TRIGGER, Block ngoài  
cùng (đầu tiên) phải có DECLARE).  
Chương 4: Lập trình PL/SQL  
5
Cấu trúc PL/SQL (tt)  
2. Cấu trúc PL/SQL  
--- Block 1  
Các khai báo biến của Block 1 (Declarations)  
BEGIN  
Các câu lệnh thực hiện (Executable Statements)  
--- Block 2  
DECLARE /*Phần Khai báo biến Block 2*/  
Các khai báo biến của Block 2 (Declarations)  
BEGIN  
Các câu lệnh thực hiện (Executable Statements)  
EXCEPTION  
Các xử lý ngoại lệ (Exception Handlers)  
/*làm gì nếu lỗi xuất hiện bên trong Block 2*/  
END;  
EXCEPTION  
Các xử lý ngoại lệ (Exception Handlers)  
--- End Block 2  
--- End Block 1  
END;  
Chương 4: Lập trình PL/SQL  
6
Cấu trúc PL/SQL- VD (tt)  
declare  
x SINHVIEN.MASV%type;  
y SINHVIEN.HOTENSV%type;  
Lưu ý:  
Chạy lệnh  
begin  
SET SERVEROUTPUT ON trong  
SQL*Plus trước.  
Lúc đó lệnh  
DBMS_OUTPUT.PUT_LINE…  
mới có hiệu lực in text “…….” ra  
màn hình  
select MASV, HOTENSV  
into x,y  
from SINHVIEN  
where MASV='SV001';  
dbms_output.put_line ('Ma SV:' || x || ' - Ho ten  
SV:' || y);  
end;  
Chương 4: Lập trình PL/SQL  
7
II. Kiểu dữ liệu trong PL/SQL  
1. Các kiểu dữ liệu cơ bản như sau:  
- BINARY_INTEGER: từ -231 đến 231-1  
- NUMBER [(precision, scale)]: precision<=38,  
Scale: -84 đến 127  
- DEC, DECIMAL, NUMERIC, DOUBLE, FLOAT:  
kiểu số thực  
- INTEGER, INT, SMALLINT: kiểu số nguyên có  
38 chữ số.  
- BOOLEAN: kiểu luận lý, có 3 giá trị True, False,  
Null  
Chương 4: Lập trình PL/SQL  
8
Các kiểu dữ liệu cơ bản (tt)  
- DATE: thế kỷ, năm, tháng, ngày, giờ, phút, giây  
- CHAR (max_length): kiểu ký tự  
- VARCHAR2 (max_length): max_length<=32767  
- LONG: <=32760 bytes.  
Chương 4: Lập trình PL/SQL  
9
Kiểu dữ liệu (tt)  
2. Khai báo  
- Khai báo biến:  
Diem FLOAT;  
- Khai báo hằng:  
heso CONSTANT NUMBER(3,2) := 1.86;  
- Với các kiểu dữ liệu trong Oracle như NUMBER,  
CHAR, VARCHAR2, DATE, LONG,… PL/SQL cho phép  
như BOOLEAN.  
Ghi chú: Ký hiệu := được sử dụng như là toán tử  
gán.  
Chương 4: Lập trình PL/SQL  
10  
Kiểu dữ liệu - gán (tt)  
- Gán biến và biểu thức:  
biến := biểu thức;  
Ví dụ:  
x := UPPER ('Nguyen');  
y := 100;  
kinhphi := kinhphi + kinhphi * 10/100;  
Ví dụ:  
kq BOOLEAN; --không có column kiểu boolean,  
-- chỉ có kiểu dữ liệu Boolean trong PL/SQL  
kq := kinhphi >20;  
- Độ ưu tiên của toán tử: ** (phép lũy thừa), NOT, *,  
/, +, -, || (phép nối chuỗi), =, !=, <>, <=, >=, IS  
NULL, LIKE, BETWEEN, IN, AND, OR.  
Chương 4: Lập trình PL/SQL  
11  
Kiểu dữ liệu (tt)  
3. Nhập xuất dữ liệu  
- Lệnh xuất:  
DBMS_OUTPUT.PUT_LINE ('Nội dung');  
Lưu ý: trước khi thực hiện lệnh xuất ta phải chạy  
lệnh SET SERVEROUTPUT ON  
- Lệnh nhập: 2 cách để nhập giá trị cho biến  
Biến thay thế &: dấu & đặt trước biến. Biến  
được nhập giá trị lúc thực thi.  
Biến thay thế &&: dấu && đặt trước biến. Giá trị  
nhập vào được lưu trữ cho những lần sau.  
Lưu ý:  
Biến kiểu chuỗi, kiểu ngày đặt trong cặp dấu ' '  
VD: a char(5):= '&a';  
Chương 4: Lập trình PL/SQL  
12  
Kiểu dữ liệu – Nhập xuất (tt)  
Ví dụ:  
--SET SERVEROUTPUT ON;  
DECLARE  
x number;  
BEGIN  
x:=&x;  
DBMS_OUTPUT.PUT_LINE('Gia tri x =');  
DBMS_OUTPUT.PUT_LINE(x);  
-- DBMS_OUTPUT.PUT_LINE ('Gia tri x = '||  
--  
TO_CHAR(X));  
END;  
Chương 4: Lập trình PL/SQL  
13  
III. Kiểu dữ liệu tham chiếu  
1. Tham chiếu kiểu %TYPE  
Dùng để khai báo một biến mà nó tham chiếu đến  
một cột trong CSDL.  
Khai báo:  
<TÊNBIẾN>  
<TÊNTRƯỜNG | TÊNBIẾNKHÁC> %TYPE  
--SET SERVEROUTPUT ON;  
DECLARE  
Kinhphi_nhonhat DETAI.Kinhphi%TYPE;  
BEGIN  
SELECT MIN(DT.Kinhphi) INTO Kinhphi_nhonhat  
FROM DETAI DT;  
DBMS_OUTPUT.PUT_LINE(Kinhphi_nhonhat);  
END;  
Chương 4: Lập trình PL/SQL  
14  
Kiểu dữ liệu tham chiếu (tt)  
2. Tham chiếu kiểu %ROWTYPE  
Dùng để khai báo một biến mà nó tham chiếu đến  
một dòng trong cơ sở dữ liệu (Có cấu trúc như một  
dòng trong Table).  
<TÊNBIẾN>  
Khai báo:  
<TÊNBẢNG>%ROWTYPE  
--SET SERVEROUTPUT ON;  
DECLARE  
row_detai DETAI%ROWTYPE;  
BEGIN  
SELECT * INTO row_detai  
FROM detai WHERE MADT= 'DT001';  
DBMS_OUTPUT.PUT_LINE(row_detai.MADT || ' : ' ||  
row_detai.TENDT );  
END;  
Chương 4: Lập trình PL/SQL  
15  
Kiểu dữ liệu tham chiếu (tt)  
3. Tham chiếu kiểu %TABLE  
Dùng để khai báo một biến mà nó tham chiếu đến  
một bảng trong CSDL (Có cấu trúc như một Table).  
Khai báo:  
TYPE <TÊNBẢNG> IS  
TABLE OF <KIỂU> [NOT NULL]  
INDEX BY BINARY_INTEGER;  
<TÊNBIẾN><TÊNBẢNG>;  
Chương 4: Lập trình PL/SQL  
16  
Kiểu dữ liệu tham chiếu - table(tt)  
Ví dụ:  
--SET SERVEROUTPUT ON;  
DECLARE  
TYPE detai_type IS TABLE OF detai%ROWTYPE  
INDEX BY BINARY_INTEGER;  
bangdt detai_type;  
BEGIN  
SELECT * INTO bangdt(1) FROM DETAI  
WHERE MADT = 'DT001 ';  
DBMS_OUTPUT.PUT_LINE(bangdt(1).MADT || ' : ' ||  
bangdt(1).TENDT || ' : ' || bangdt(1).CHUNHIEM);  
END;  
Chương 4: Lập trình PL/SQL  
17  
IV. Các mệnh đề  
1. Mệnh đề Select  
SELECT <Danhsáchtrường>  
INTO <Danhsáchbiến> [cursor_var]  
FROM BẢNG1, BẢNG2,..  
WHERE <Điềukiện>  
DECLARE  
vMASV SINHVIEN.MASV%TYPE;  
vHOTENSV SINHVIEN.HOTENSV%TYPE;  
BEGIN  
SELECT MASV, HOTENSV INTO vMASV, vHOTENSV  
FROM SINHVIEN WHERE MASV= ' SV002 ' ;  
DBMS_OUTPUT.PUT_LINE (vMASV|| ' : ' || vHOTENSV);  
END;  
Chương 4: Lập trình PL/SQL  
18  
Các mệnh đề (tt)  
2. Mệnh đề INSERT | UPDATE | DELETE  
DECLARE  
MAKH CHAR(2);  
TENKH VARCHAR2(40);  
BEGIN  
MAKH := 'TT';  
TENKH := 'Su pham Toan - Tin';  
INSERT INTO KHOA (MAKH, TENKH)  
VALUES (MAKH, TENKH);  
EXCEPTION WHEN OTHERS THEN  
DBMS_OUTPUT.PUT_LINE (SQLERRM);  
END;  
Chương 4: Lập trình PL/SQL  
19  
V. Các cấu trúc điều khiển  
1. Rẽ nhánh IF  
Cú pháp:  
IF <điềukiện1> THEN <Câulệnh1>;  
ELSE  
IF <điềukiện2> THEN <Câulệnh2>;  
ELSE  
…;  
END IF;  
END IF;  
Chương 4: Lập trình PL/SQL  
20  
Tải về để xem bản đầy đủ
pdf 47 trang yennguyen 11340 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu nâng cao - Chương 4: Lập trình PL/SQL - Nguyễn Thị Mỹ Dung", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_co_so_du_lieu_nang_cao_chuong_4_lap_trinh_plsql_ng.pdf