Bài thực hành Bảo mật hệ thống thông tin số 5: PL/SQL
Số trang: 16
Loại file: docx
Dung lượng: 58.84 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài thực hành Bảo mật hệ thống thông tin số 5: PL/SQL có nội dung trình bày về xử lý ngoại lệ, bộ kiểm soát lỗi, procedure và function, cursor, trigger,... Mời các bạn cùng tham khảo chi tiết nội dung tài liệu.
Nội dung trích xuất từ tài liệu:
Bài thực hành Bảo mật hệ thống thông tin số 5: PL/SQL Bài thực hành số 5 PL/SQL (2) Tóm tắt nội dung: Xử lý ngoại lệ Procedure và Function Cursor Trigger I. Xử lý ngoại lệ 1. Giới thiệu về Exception Các Exception là các danh định trong PL/SQL mà có thể gặp phải trong khi thực thi một khối dẫn đến thân chính của các tác vụ sẽ bị kết thúc. Một khối luôn luôn kết thúc khi gặp một exception, nhưng có thể chỉ ra một exception handler để thi hành tác vụ cuối cùng trước khi khối bị kết thúc. Nếu exception được kiểm soát (handled) thì exception sẽ không truyền ra ngoài khối hay ra môi trường. Hai nhóm chính của exception là : Predefined: đã được định nghĩa trước bới PL/SQL và dính với các mã lỗi xác định Userdefined: khai báo trong khối, chỉ thường dùng khi có nhu cầu cụ thể với chúng, ngoài ra có thể gắn chúng với các mã lỗi cần thiết. Trong bài này, chúng ta sẽ tập trung vào các exception đã định nghĩa trước: Tên Exception Lỗi Oracle DUP_VAL_ON_INDEX 1 INVALID_CURSOR 1001 Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM INVALID_NUMBER 1722 LOGIN_DINIED 1017 NO_DATA_FOUND 1403 (ANSI +100) NOT_LOGGED_ON 1012 PROGRAM_ERROR 6501 STORAGE_ERROR 6500 TIMEOUT_ON_RESOURCE 51 TOO_MANY_ROWS 1422 VALUES_ERROR 6502 ZERO_DIVIDE 1476 CURSOR_ALREADY_OPEN 6511 TRANSACTION_BACKED_OUT 61 2. Bộ kiểm soát lỗi Nếu một exception xảy ra, quyền điều khiển sẽ chuyển cho phần EXCEPTION trong khối mà nó xảy ra. Nếu exception đó không kiểm soát được trong phần này hoặc là không có phần này thì khối sẽ kết thúc với exception unhandled và có thể tác động đến môi trường ngoài. Ví dụ: BEGIN INSERT INTO dept (deptno, dname) VALUES (50, ’CLEANING’); INSERT INTO dept (deptno, dname) VALUES (50, ‘TRANING’); -- Exception DUP_VAL_ON_INDEX xảy ra tại đây END; -- Khối sẽ kết thúc với exception unhandled ORA-00001 Để bẫy các sự kiện này và chận các exception, có thể định nghĩa các exception handler trong phần EXCEPTION. Cú pháp: Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM WHEN exceptionnidentifier THEN actions; Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM Ví dụ : DECLARE v_ename emp.ename%TYPE; v_job emp.job%TYPE; BEGIN SELECT ename, job INTO v_name, v_job FROM emp WHERE hiredate BETWEEN ‘01/01/92’ AND ‘31/12/92’; EXCEPTION WHEN no_data_found THEN INSERT INTO error_tab VALUES (‘Nobody in 92’); WHEN too_many_rows THEN INSERT INTO error_tab VALUES (‘More than one person in 92’); END; Bộ kiểm soát lỗi ‘WHEN OTHERS’: có thể dùng định nghĩa này để chặn tất cả các exception còn lại ngoài các exception đã định nghĩa trong phần EXCEPTION. Phần này được đặt cuối cùng trong phần EXCEPTION. Ví dụ: BEGIN SAVEPOINT so_far_so_good; INSERT INTO statistics_tab VALUES (18, 25, 91); EXCEPTION WHEN dup_val_on_index THEN ROLLBACK TO so_far_so_good; WHEN OTHERS THEN INSERT INTO error_tab VALUES (‘Error during block’); END; Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM 3. Các hàm dùng trong bẫy lỗi Khi một exception xảy ra, ta có thể xác định mã lỗi và câu chú của nó. PL/SQL cung cấp 2 hàm: Trả về mã lỗi của exception đó. Nếu dùng nó ngoài phần SQLCODE EXCEPTION thì mã trả ra là 0 SQLERR Trả về toàn bộ câu chú lỗi (error message) và có cả mã lỗi M Ví dụ: DECLARE error_message CHAR (100); error_code NUMBER; BEGIN … EXCEPTION WHEN OTHERS THEN error_message := SUBSTR (SQLERRM, 1, 100); ...
Nội dung trích xuất từ tài liệu:
Bài thực hành Bảo mật hệ thống thông tin số 5: PL/SQL Bài thực hành số 5 PL/SQL (2) Tóm tắt nội dung: Xử lý ngoại lệ Procedure và Function Cursor Trigger I. Xử lý ngoại lệ 1. Giới thiệu về Exception Các Exception là các danh định trong PL/SQL mà có thể gặp phải trong khi thực thi một khối dẫn đến thân chính của các tác vụ sẽ bị kết thúc. Một khối luôn luôn kết thúc khi gặp một exception, nhưng có thể chỉ ra một exception handler để thi hành tác vụ cuối cùng trước khi khối bị kết thúc. Nếu exception được kiểm soát (handled) thì exception sẽ không truyền ra ngoài khối hay ra môi trường. Hai nhóm chính của exception là : Predefined: đã được định nghĩa trước bới PL/SQL và dính với các mã lỗi xác định Userdefined: khai báo trong khối, chỉ thường dùng khi có nhu cầu cụ thể với chúng, ngoài ra có thể gắn chúng với các mã lỗi cần thiết. Trong bài này, chúng ta sẽ tập trung vào các exception đã định nghĩa trước: Tên Exception Lỗi Oracle DUP_VAL_ON_INDEX 1 INVALID_CURSOR 1001 Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM INVALID_NUMBER 1722 LOGIN_DINIED 1017 NO_DATA_FOUND 1403 (ANSI +100) NOT_LOGGED_ON 1012 PROGRAM_ERROR 6501 STORAGE_ERROR 6500 TIMEOUT_ON_RESOURCE 51 TOO_MANY_ROWS 1422 VALUES_ERROR 6502 ZERO_DIVIDE 1476 CURSOR_ALREADY_OPEN 6511 TRANSACTION_BACKED_OUT 61 2. Bộ kiểm soát lỗi Nếu một exception xảy ra, quyền điều khiển sẽ chuyển cho phần EXCEPTION trong khối mà nó xảy ra. Nếu exception đó không kiểm soát được trong phần này hoặc là không có phần này thì khối sẽ kết thúc với exception unhandled và có thể tác động đến môi trường ngoài. Ví dụ: BEGIN INSERT INTO dept (deptno, dname) VALUES (50, ’CLEANING’); INSERT INTO dept (deptno, dname) VALUES (50, ‘TRANING’); -- Exception DUP_VAL_ON_INDEX xảy ra tại đây END; -- Khối sẽ kết thúc với exception unhandled ORA-00001 Để bẫy các sự kiện này và chận các exception, có thể định nghĩa các exception handler trong phần EXCEPTION. Cú pháp: Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM WHEN exceptionnidentifier THEN actions; Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM Ví dụ : DECLARE v_ename emp.ename%TYPE; v_job emp.job%TYPE; BEGIN SELECT ename, job INTO v_name, v_job FROM emp WHERE hiredate BETWEEN ‘01/01/92’ AND ‘31/12/92’; EXCEPTION WHEN no_data_found THEN INSERT INTO error_tab VALUES (‘Nobody in 92’); WHEN too_many_rows THEN INSERT INTO error_tab VALUES (‘More than one person in 92’); END; Bộ kiểm soát lỗi ‘WHEN OTHERS’: có thể dùng định nghĩa này để chặn tất cả các exception còn lại ngoài các exception đã định nghĩa trong phần EXCEPTION. Phần này được đặt cuối cùng trong phần EXCEPTION. Ví dụ: BEGIN SAVEPOINT so_far_so_good; INSERT INTO statistics_tab VALUES (18, 25, 91); EXCEPTION WHEN dup_val_on_index THEN ROLLBACK TO so_far_so_good; WHEN OTHERS THEN INSERT INTO error_tab VALUES (‘Error during block’); END; Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM 3. Các hàm dùng trong bẫy lỗi Khi một exception xảy ra, ta có thể xác định mã lỗi và câu chú của nó. PL/SQL cung cấp 2 hàm: Trả về mã lỗi của exception đó. Nếu dùng nó ngoài phần SQLCODE EXCEPTION thì mã trả ra là 0 SQLERR Trả về toàn bộ câu chú lỗi (error message) và có cả mã lỗi M Ví dụ: DECLARE error_message CHAR (100); error_code NUMBER; BEGIN … EXCEPTION WHEN OTHERS THEN error_message := SUBSTR (SQLERRM, 1, 100); ...
Tìm kiếm theo từ khóa liên quan:
Bài thực hành Bảo mật hệ thống thông tin Bảo mật hệ thống thông tin Xử lý ngoại lệ Bộ kiểm soát lỗi Vùng SQL dùng riêng Explicit Cursor AttributesTài liệu liên quan:
-
Ôn tập Hệ thống thông tin quản lý
22 trang 112 0 0 -
11 trang 59 0 0
-
Bài giảng Bảo mật hệ thống thông tin
137 trang 36 0 0 -
Bài thực hành Bảo mật hệ thống thông tin số 1: Tổng quan về Oracle Database
15 trang 35 0 0 -
Bài giảng An toàn toàn bảo mật hệ thống thông tin: Phần 1
66 trang 32 0 0 -
Bài giảng Bảo mật hệ thống thông tin: Chương 7 - ĐH Bách khoa TP HCM
70 trang 29 0 0 -
Bài giảng An ninh mạng máy tính: Chương 1
65 trang 27 0 0 -
Câu hỏi ôn tập Hệ thống thông tin và quản lý
17 trang 27 0 0 -
Bài giảng An toàn toàn bảo mật hệ thống thông tin: Phần 2
87 trang 26 0 0 -
Bài giảng An toàn và bảo mật hệ thống thông tin - Chuyên đề 4: Phần mềm mã độc
37 trang 26 0 0