Danh mục

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    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: 1,000 VND Tải xuống file đầy đủ (16 trang) 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  User­defined: 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 exceptionn­identifier 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ài liệu được xem nhiều: