Error handing

3 226 0
Error handing

Đang tải... (xem toàn văn)

Thông tin tài liệu

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. . 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

Ngày đăng: 06/10/2013, 09:20

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