Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 5 - Nguyễn Thị Mỹ Dung

29 7 0
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 5 - Nguyễn Thị Mỹ Dung

Đ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

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 5 Procedure, Trigger, Function cung cấp cho người học những kiến thức như: Procedure; Function; Trigger; Bài tập thực hành. Mời các bạn cùng tham khảo!

Bài giảng HQT Cơ sở 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 NỘI DUNG MÔN HỌC Chương 2: Cơ Oracle (2) Chương 1: Tổng quan Oracle (2) Chương 3: Truy vấn SQL (12) Chương 4: Lập trình PL/SQL (9) Chương 5: Procedure, Trigger, Function (12) Chương 6: Quản trị người dùng (4) Chương 7: Kết nối CSDL với Oracle (4) Ch5: Procedure, Function, Trigger I II III IV Procedure Function Trigger Bài tập thực hành I Procedure Giới thiệu Thủ tục chương trình để thực hành động cụ thể để tăng khả xử lý Có thể sử dụng nhiều lần, có tính bảo mật an tồn liệu cao Khơng có giá trị trả Khai báo CREATE [OR REPLACE] PROCEDURE tên-thủ tục [(dsáchthamsố)] IS [khai báo biến] BEGIN [EXCEPTION ] END; /*kết thúc thủ tục*/ Procedure – khai báo (tt) - Từ khóa OR REPLACE để tự động xóa tạo thủ tục tên thủ tục tồn Ví dụ: CREATE OR REPLACE HienThiNgay (m number) IS … - Không dùng Varchar2(n) tham số truyền vào, kiểu liệu tham số truyền vào phải kiểu liệu không ràng buộc - Không thể áp dụng cho điều kiện thực nhóm (mệnh đề GROUP) Procedure – khai báo (tt) Cú pháp đầy đủ: CREATE [OR REPLACE] PROCEDURE procedure_name [( [IN | OUT | IN OUT] [, [IN | OUT | IN OUT] [DEFAULT ]) ] IS [ < kiểudữliệu > [NULL | NOT NULL] [DEFAULT ] ;] BEGIN [;] Đây khối lệnh PL/SQL chương trình [EXCEPTION Phần ngoại lệ (nếu có) WHEN THEN [;] ] END; Procedure (tt) Gọi thủ tục - Cú pháp gọi PL/SQL: Declare … BEGIN Tênthủtục(danhsáchthamsố);*/ … END; - Cú pháp gọi thủ tục từ SQL*Plus: SQL> EXECUTE Tênthủtục(danhsáchthamsố) Xóa thủ tục DROP PROCEDURE tênthủtục; Procedure (tt) VD1: Tăng kinh phí cho đề tài DT004 CREATE OR REPLACE PROCEDURE Tang_kinhphi AS kp_old INT; kp_new INT; BEGIN SELECT KINHPHI INTO kp_old FROM DETAI WHERE MADT='DT004'; IF SQL%FOUND THEN kp_new := kp_old + kp_old*10/100; UPDATE DETAI SET KINHPHI = kp_new WHERE MADT='DT004'; Procedure – VD1 (tt) IF SQL%ROWCOUNT0 THEN DBMS_OUTPUT.PUT_LINE ('De tai DT004 duoc tang'); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('Khong tim thay de tai nay!'); END;  Thực thi thủ tục: Begin TANG_kinhphi; end; Procedure – VD (tt) VD2: Thủ tục in ngày tương ứng với số truyền vào CREATE PROCEDURE P_Ngay (n IN NUMBER,m OUT NUMBER) IS CHAR(15); BEGIN IF n =1 THEN :='Sunday'; ELSIF n =2 THEN :='Monday'; ELSIF n =3 THEN :='Tuesday'; ELSIF n =4 THEN :='Wednesday'; ELSIF n =5 THEN :='Thursday'; ELSIF n =6 THEN :='Friday'; ELSIF n =7 THEN :='Saturday'; END IF; m:=n; dbms_output.put_line('Ngay truyen vao:' || ngay); END; 10 Function (tt) Khai báo Cú pháp: CREATE [OR REPLACE] FUNCTION Tênhàm [( [IN] [, [IN] [DEFAULT ]) ] RETURN IS [ [NULL | NOT NULL] [DEFAULT ] ;] BEGIN [;] Đây khối lệnh PL/SQL chương trình RETURN ; [EXCEPTION Phần ngoại lệ (nếu có) WHEN THEN [;] ] END; 15 Function (tt) Gọi hàm PL/SQL Đầu tiên khai báo biến có kiểu liệu trùng với kiểu liệu trị trả hàm Thực lệnh sau: Declare x CHAR(20); BEGIN x:=F_Ngay(3); /*Tổng quát: biến:=Tênhàm(danhsáchđốisố);*/ … END; Lệnh xóa hàm DROP FUNCTION Tênhàm; 16 Function (tt) VD1: Hàm hiển thị Ngày tương ứng với số CREATE FUNCTION F_Ngay (n NUMBER) RETURN CHAR AS CHAR(15); BEGIN IF n =1 THEN :='Sunday'; ELSIF n =2 THEN :='Monday'; ELSIF n =3 THEN :='Tuesday'; ELSIF n =4 THEN :='Wednesday'; ELSIF n =5 THEN :='Thursday'; ELSIF n =6 THEN :='Friday'; ELSIF n =7 THEN :='Saturday'; END IF; RETURN ngay; END; 17 Function (tt) Thực thi Hàm DECLARE X CHAR(30); BEGIN X:=F_NGAY(4); DBMS_OUTPUT.PUT_LINE(X); END; Ghi chú: thay ví dụ1 (Function) hàm khác (F_Ngay1) với tham số IN, OUT (tương tự Procedure) 18 Function (tt) VD2: Đếm số lượng đề tài CREATE OR REPLACE FUNCTION SLDT (MA_DT DETAI.MADT%TYPE) RETURN NUMBER AS Soluong NUMBER; BEGIN SELECT COUNT(MADT) INTO Soluong FROM DETAI WHERE MADT=MA_DT; RETURN Soluong; END; Run Function DECLARE X NUMBER; Y VARCHAR2(5):='DT004'; BEGIN X:=SLDT(Y); DBMS_OUTPUT.PUT_LINE(X); END; IN 19 III Trigger Giới thiệu - Trigger dùng để khai báo ràng buộc toàn vẹn phức tạp mà khai báo cấp talbe ràng buộc: NOT NULL, UNIQUE, PRIMARY KEY, CHECK,… - Được thực ngầm định thực lệnh SQL INSERT, DELETE, UPDATE nhằm đảm bảo quy tắc logic phức tạp liệu - Chỉ sử dụng cần thiết gây rối với hệ thống lớn - Không cho phép lệnh quản lý giao tác (COMMIT, ROLLBACK, SAVE POINT…) bên thân trigger 20 Trigger (tt) Các thành phần - BEFORE TRIGGER: Trigger kích hoạt trước thực câu lệnh - AFTER TRIGGER: trigger kích hoạt sau thực câu lệnh - INSTEAD OF TRIGGER: trigger cho phép người dùng thay đổi cách suốt liệu số view - Tùy chọn FOR EACH ROW để trigger thi hành câu lệnh SQL tác động lên dòng - NEW giá trị dòng insert | update, OLD giá trị dịng xóa delete - INSERT | DELETE | UPDATE ứng với kiện tác động lên table để trigger tự động thi hành kiện xảy 21 Trigger (tt) Cú pháp CREATE [OR REPLACE] TRIGGER Têntrigger BEFORE | AFTER INSERT | DELETE | UPDATE ON tên-Table [REFERENCING [NEW AS ] [OLD AS ]] [FOR EACH ROW] DECLARE /*Có có khai báo biến*/ [khai báo biến] WHEN Điều kiện ràng buộc trigger BEGIN Block-của-PL/SQL Khối lệnh PL/SQL END; 22 Trigger (tt) Thao tác với Trigger Cho phép/ không cho phép kích hoạt Trigger: ALTER TRIGGER têntrigger DISABLE | ENABLE; Khơng cho phép kích hoạt tất Trigger bảng: ALTER TABLE table_name DISABLE | ENABLE ALL TRIGGERS; Xóa trigger DROP TRIGGER Têntrigger; 23 Trigger (tt) VD1: Tạo trigger ràng buộc thêm khách hàng hiển thị thông báo “Đã thêm thành công” CREATE OR REPLACE TRIGGER THEMSV AFTER INSERT ON SINHVIEN FOR EACH ROW BEGIN DBMS_OUTPUT.PUT_LINE('DA THEM THANH CONG'); END; Kiem tra TRIGGER INSERT INTO SINHVIEN VALUES ('SV100', 'NGUYEN HO TRUC ANH', 1995, 'TIEN GIANG', 7.2); 24 Trigger (tt) VD2: Tạo trigger ràng buộc thêm đề tài thêm sinh viên SV001 thực đề tài Trà Vinh với kết CREATE OR REPLACE TRIGGER TRG_THEMDETAI AFTER INSERT ON DETAI FOR EACH ROW DECLARE V_MADT SVDT.MADT%TYPE; V_MASV SVDT.MASV%TYPE:='SV001'; V_NOIAD SVDT.NOIAD%TYPE:='TRA VINH'; V_KQ SVDT.KETQUA%TYPE:=7; BEGIN IF :NEW.MADT IS NOT NULL THEN V_MADT:=:NEW.MADT; INSERT INTO SVDT (MASV, MADT, NOIAD, KETQUA) VALUES (V_MASV, V_MADT, V_NOIAD, V_KQ); DBMS_OUTPUT.PUT_LINE('DA THEM THANH CONG'); END IF; END; 25 Trigger – VD (tt) VD: Kiểm tra năm sinh nhập vào có hợp lệ? CREATE TRIGGER KiemtraNS AFTER INSERT OR UPDATE OF Namsinh ON SINHVIEN FOR EACH ROW BEGIN IF (:new.Namsinh < 0) THEN RAISE_APPLICATION_ERROR(-20000, 'Nam sinh khong hop le!'); END IF; END; 26 IV Bài tập Xây dựng khối lệnh xuất bảng cửu chương Xây dựng khối lệnh liệt kê danh sách sinh viên thực theo đề tài? Xây dựng khối lệnh kiểm tra MASV có tồn khơng? Xây dựng khối lệnh kiểm tra MADT có tồn không? Tạo Trigger thêm đề tài hiển thị họ tên sinh viên thực đề tài Tạo Trigger ràng buộc thêm sinh viên cập nhật tự động trị thêm đề tài sinh viên thực 27 Bài tập (tt) Tạo Trigger ràng buộc xoá sinh viên xố tồn liệu có liên quan đến sinh viên Tạo Trigger ràng buộc cập nhật MaDT cập nhập liệu liên quan đến đề tài Tạo Trigger ràng buộc thêm cập nhật kinh phí cho đề tài phải lớn 28 Tóm tắt chương - Cách xây dựng thủ tục, hàm, trigger - Thực cài đặt thủ tục, hàm, trigger 29 ...NỘI DUNG MÔN HỌC Chương 2: Cơ Oracle (2) Chương 1: Tổng quan Oracle (2) Chương 3: Truy vấn SQL (12) Chương 4: Lập trình PL/SQL (9) Chương 5: Procedure, Trigger, Function (12) Chương 6: Quản trị. .. An'',19 95, ''Can Tho'', 7 .5) ; END; 13 II Function Giới thiệu Hàm chương trình có trả giá trị Hàm thủ tục giống nhau, khác chỗ hàm có mệnh đề RETURN Tham số sử dụng hàm loại IN, khơng chấp nhận giá trị. .. KEY, CHECK,… - Được thực ngầm định thực lệnh SQL INSERT, DELETE, UPDATE nhằm đảm bảo quy tắc logic phức tạp liệu - Chỉ sử dụng cần thiết gây rối với hệ thống lớn - Không cho phép lệnh quản lý giao

Ngày đăng: 13/07/2021, 11:43

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan