Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 4: Lập trình PL/SQL - Nguyễn Thị Mỹ Dung
Bài giảng
HQT Cơ sở dữ liệu
(ORACLE)
Số tc: 3; LT: 25; Btập: 20
GV: Nguyễn Thị Mỹ Dung
Khối lớp: Đại học L2
1
NỘI DUNG MÔN HỌC
1
Chương 1: Tổng quan về Oracle (2)
Chương 2: Cơ bản về Oracle (2)
2
3
Chương 3: Truy vấn SQL (12)
4
Chương 4: Lập trình PL/SQL (9)
Chương 5: Procedure, Trigger, Function (12)
5
6
Chương 6: Quản trị người dùng (4)
7
Chương 7: Kết nối CSDL với Oracle (4)
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 phức tạp
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
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.
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ền 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).
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)
Các câu lệnh thực hiện (Executable Statements)
BEGIN
--- 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;
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;
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
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.
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.
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.
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 ' '
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;
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;
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;
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>;
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;
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
MASV SINHVIEN.MASV%TYPE;
HOTENSV SINHVIEN.TENS1818V%TYPE;
BEGIN
SELECT MASV, HOTENSV INTO MASV, HOTENSV
FROM SINHVIEN WHERE MASV= ' SV002 '
DBMS_OUTPUT.PUT_LINE (MASV|| ' : ' || HOTENSV);
END;
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;
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;
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu - 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:
bai_giang_he_quan_tri_co_so_du_lieu_chuong_4_lap_trinh_plsql.pdf

