Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách khai báo ngoại lệ do người dùng xác định bằng PRAGMA EXCEPTION_INIT

Như đã thảo luận trong phần giới thiệu về Xử lý ngoại lệ PL / SQL, có ba cách khai báo các ngoại lệ do người dùng xác định. Trong số ba cách đó, chúng ta đã học được hai cách đầu tiên là khai báo ngoại lệ do người dùng xác định bằng cách sử dụng

  1. Nâng cao Tuyên bố và
  2. Thủ tục Raise_Application_Error

Cách duy nhất còn lại để được thảo luận bây giờ là khai báo các ngoại lệ do người dùng xác định bằng cách sử dụng hàm PRAGMA EXCEPTION_INIT trong Cơ sở dữ liệu Oracle.

Vì vậy, trong hướng dẫn PL / SQL này, chúng ta sẽ học cách khai báo ngoại lệ do người dùng xác định PL / SQL trong Cơ sở dữ liệu Oracle bằng cách sử dụng hàm PRAGMA EXCEPTION_INIT.

PRAGMA EXCEPTION_INIT là gì?

Pragma Exception_Init là một câu lệnh gồm hai phần trong đó phần đầu tiên được tạo thành từ từ khóa PRAGMA và phần thứ hai là lệnh gọi Exception_Init.

Từ khóa PRAGMA

Một pragma là một chỉ thị trình biên dịch cho biết rằng các Câu lệnh theo sau bởi từ khóa PRAGMA là một câu lệnh chỉ thị cho trình biên dịch, điều này có nghĩa là câu lệnh sẽ được xử lý tại thời điểm biên dịch chứ không phải tại thời gian chạy.

PRAGMA Exception_Init

Exception_init giúp bạn liên kết tên ngoại lệ với số lỗi Oracle. Nói cách khác, chúng ta có thể nói rằng sử dụng Exception_Init, bạn có thể đặt tên cho ngoại lệ.

Tại sao lại đặt tên cho ngoại lệ?

Có, có một cách khai báo ngoại lệ do người dùng xác định mà không có tên và đó là bằng cách sử dụng thủ tục Raise_Exception_Error. Đây thực sự là một cách đơn giản và dễ dàng nhưng như chúng ta đã học trong hướng dẫn cuối cùng rằng để xử lý các ngoại lệ không có tên, chúng tôi sử dụng trình xử lý ngoại lệ OTHERS.

Bây giờ, hãy nghĩ rằng trong dự án của bạn, bạn có nhiều ngoại lệ và không có tên. Để xử lý tất cả các ngoại lệ đó, bạn có một trình xử lý ngoại lệ duy nhất có tên OTHERS. Trong trường hợp này khi xảy ra điều kiện ngoại lệ, trình biên dịch sẽ hiển thị ngăn xếp lỗi do trình xử lý KHÁC tạo ra.

Bạn có thể tưởng tượng sẽ khó khăn như thế nào để theo dõi phần nào gây ra lỗi trong dự án của bạn. Để theo dõi phần đó, bạn cần phải xem qua từng &từng dòng mã của mình. Điều này sẽ chỉ là lãng phí thời gian.

Bạn có thể tiết kiệm tất cả những nỗ lực lãng phí thời gian đó chỉ bằng cách đặt tên ngoại lệ, bằng cách đó bạn có thể thiết kế một trình xử lý ngoại lệ cụ thể cho tên ngoại lệ của bạn mà sẽ dễ dàng theo dõi. Đây là lợi thế của việc đặt tên ngoại lệ.

Cú pháp của Pragma Exception_Init.

PRAGMA EXCEPTION_INIT (exception_name, error_number);

Ví dụ:Khai báo ngoại lệ do người dùng xác định bằng cách sử dụng Pragma Exception_Init

DECLARE
  ex_age    EXCEPTION;
  age       NUMBER    := 17;
  PRAGMA EXCEPTION_INIT(ex_age, -20008);
BEGIN
  IF age<18 THEN
    RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!');
  END IF;
  
  DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?');
  
  EXCEPTION WHEN ex_age THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);   
END;
/

Tôi đã giải thích chi tiết ví dụ này trong Video Hướng dẫn trên kênh YouTube của tôi. Tôi muốn bạn xem hướng dẫn ở đó.

Tại sao sử dụng PRAGMA EXCEPTION_INIT với RAISE_APPLICATION_ERROR?

Mặc dù không bắt buộc phải sử dụng PRAGMA EXCEPTION_INIT với thủ tục RAISE_APPLICATION_ERROR, tuy nhiên, đó là sở thích cá nhân hơn là quy tắc lập trình. Nếu bạn muốn in thông báo lỗi với số lỗi giống như cách hiển thị lỗi tiêu chuẩn của Oracle thì cách tốt nhất là sử dụng PRAGMA EXCEPTION_INIT với quy trình RAISE_APPLICATION_ERROR.

Nhưng nếu bạn chỉ muốn in thông báo lỗi chứ không phải số lỗi thì bạn có thể sử dụng PRAGMAEXCEPTION_INIT với câu lệnh RAISE.

Đó là hướng dẫn PL / SQL về cách khai báo ngoại lệ do người dùng xác định trong Cơ sở dữ liệu Oracle bằng PRAGMA EXCEPTION_INIT. Hy vọng bạn đã học được một cái gì đó mới. Nếu bạn thấy hướng dẫn này có nhiều thông tin thì hãy chia sẻ trên phương tiện truyền thông xã hội của bạn. Cảm ơn và chúc một ngày tốt lành!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Số lượng hàng đã đọc / Cảnh báo đọc hàng thực tế trong Plan Explorer

  2. Đưa Teradata vào dữ liệu thử nghiệm thực tế De Novo

  3. Tạo số nguyên ngẫu nhiên mà không có xung đột

  4. Sử dụng các mẫu quy trình làm việc để quản lý trạng thái của bất kỳ thực thể nào

  5. Điều chỉnh hiệu suất đầu gối:Sử dụng sai bảng tạm thời