Tải bản đầy đủ (.pdf) (3 trang)

Error handing

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (102.18 KB, 3 trang )

Công ty cổ phần đầu t phát triển công nghệ - FPT
Giáo trình SQL và PL/SQL

Đào tạo cơ bản: SQL và PL/SQL Trang 76
23 error handing
Error handing là lỗi xuất hiện trong khối lệnh PL/SQL, tất cả các lỗi này sẽ chạy về phần EXCEPTION trong
khối lệnh để xử lý.
Khối lệnh PL/SQL gồm các thành phần
DECLARE /Không bắt buộc/
Định nghĩa các biến
BEGIN
Đoạn lệnh;
EXCEPTION /Không bắt buộc/
Hành đồng nếu lỗi xuất hiện;
END;
Cú pháp thực hiện các EXCEPTION;
EXCEPTION
WHEN exception1 [OR exception1. . .] THEN
Xử lý;
. . .
[WHEN exception3 [OR exception4. . .] THEN
Xử lý;
. . .]
[WHEN OTHERS THEN
Xử lý;
. . .]
Trong đó:
exception : tên lỗi n
WHEN OTHERS : dùng để xử lý các trờng hợp lỗi khác
Điều kiện kích hoạt exception
Có 2 nhóm exception:


Các exception của bản thân Oracle nh: NO_DATA_FOUND, FOUND, TOO_MANY_ROW ...
Các exception do ngời sử dụng khai báo
Các exception hệ thống tự động bị kích hoạt trong các trờng hợp nhất định. Các exception ngời sử dụng
định nghĩa phải tự kích hoạt, ví dụ
RAISE exception_identifier;


Một số exception hay dùng của bản thân Oracle:
Tên Mã lỗi Mô tả
NO_DATA_FOUND ORA_01403 Câu lệnh SELECT INTO không trả về row nào
TOO_MANY_ROW ORA_01422 Câu lệnh SELECT INTO không trả về lớn hơn 1
row
INVALID_CURSOR ORA_01001 Lỗi xử lý CURSOR
ZERO_DIVIDE ORA_01476 Lỗi chia cho 0
Công ty cổ phần đầu t phát triển công nghệ - FPT
Giáo trình SQL và PL/SQL

Đào tạo cơ bản: SQL và PL/SQL Trang 77
DUP_VAL_ON_INDEX ORA_00001 Lỗi giá trị bị trùng lắp trong một UNI QUE INDEX
Ví dụ Xoá những nhân viên trong bảng emp nếu tại phòng nhân viên đó làm việc chỉ có một nhân viên; trong
Procedure buider
PROCEDURE DELEMP
(V_EMP IN EMP.EMPNO%TYPE) IS
V_ID EMP.EMPNO%TYPE;

BEGIN
SELECT EMPNO
INTO V_ID
FROM EMP
WHERE EMPNO = V_EMP;


DELETE FROM EMP
WHERE EMPNO = V_EMP;
COMMIT;

EXCEPTION
WHEN NO_DATA_FOUND THEN
ROLLBACK;
TEXT_IO.PUT_LINE(TO_CHAR(V_EMP)||'KHONG CO');

WHEN TOO_MANY_ROWS THEN
ROLLBACK;
TEXT_IO.PUT_LINE('CO LOI DU LIEU TRONG BANG EMP');

WHEN OTHERS THEN
ROLLBACK;
TEXT_IO.PUT_LINE('CO LOI KHAC TRONG BANG EMP');
END;


Gọi chạy delemp(7364);
Các exception do ngời sử dụng định nghĩa
Khai báo exception
identifier EXCEPTION;
Ví dụ:
DECLARE
credit_exceeded EXCEPTION;
BEGIN
IF stock_ordered > credit_limit THEN
RAISE credit_exceeded;

END IF
....
EXCEPTION
WHEN credit_exceeded THEN ....
END;
Đặt tên cho các exception hệ thống
Mỗi exception hệ thống đợc gán một số xác định, có thể đặt tên cho các exception để dễ sử dụng hơn.
PRAGMA EXCEPTION_INIT (exception_identifier, number)
Công ty cổ phần đầu t phát triển công nghệ - FPT
Giáo trình SQL và PL/SQL

Đào tạo cơ bản: SQL và PL/SQL Trang 78
Ví dụ
DECLARE
fetch_failed EXCEPTION;
PRAGMA EXCEPTION_INIT (fetch_failed, -1002);
BEGIN
....
EXCEPTION
WHEN fetch_failed THEN ....
END;
23.1 Bài tập
1. Dùng EXCEPTION bắt lỗi chặt hơn cho các bài tập từ phần 19-22.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×