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

Cách khai báo ngoại lệ do người dùng xác định bằng biến ngoại lệ trong cơ sở dữ liệu Oracle

Trong phần Giới thiệu về Ngoại lệ PL / SQL, chúng ta đã biết rằng có ba cách khai báo các ngoại lệ do người dùng xác định trong Cơ sở dữ liệu Oracle. Trong hướng dẫn này, chúng ta sẽ khám phá cách đầu tiên và tìm hiểu cách khai báo ngoại lệ do người dùng xác định bằng cách sử dụng một biến kiểu dữ liệu Exception.

Khai báo một ngoại lệ do người dùng xác định bằng cách sử dụng biến Exception là một quy trình ba bước. Ba bước này là -

  1. Khai báo một biến của kiểu dữ liệu ngoại lệ - Biến này sẽ gánh toàn bộ gánh nặng lên vai.
  2. Nâng cao Ngoại lệ - Đây là phần mà bạn nói với trình biên dịch về điều kiện sẽ kích hoạt ngoại lệ.
  3. Xử lý ngoại lệ - Đây là phần cuối cùng mà bạn chỉ định điều gì sẽ xảy ra khi lỗi mà bạn nêu ra sẽ kích hoạt.

Trong hướng dẫn PL / SQL này, tôi sẽ giải thích cho bạn từng bước trong ba bước này với sự trợ giúp của mã PL / SQL.

Với mục đích trình diễn, tôi sẽ viết một đoạn mã sẽ kiểm tra xem số chia có là 0 hay không trong phép toán chia. Nếu nó bằng 0 thì một lỗi sẽ xảy ra và sẽ được hiển thị cho người dùng nếu không giá trị thực tế là kết quả của phép chia sẽ được trả về trên màn hình đầu ra.

Bước 1:Khai báo một biến kiểu dữ liệu ngoại lệ

Theo biến Exception, ý tôi là một biến có kiểu dữ liệu Exception. Giống như bất kỳ biến PL / SQL nào khác, bạn có thể khai báo một biến Ngoại lệ trong phần khai báo của khối PL / SQL ẩn danh cũng như được đặt tên. Biến ngoại lệ này sau đó sẽ hoạt động như một ngoại lệ do người dùng xác định cho mã của bạn.

DECLARE
  var_dividend NUMBER := 24;
  var_divisor NUMBER := 0;
  var_result NUMBER;
  ex_DivZero EXCEPTION;

Trong phần khai báo này chúng ta có 4 biến. Trong số 4 biến này, 3 biến đầu tiên là biến kiểu dữ liệu Số bình thường và 4 biến kiểu ex_DivZero là biến kiểu dữ liệu EXCEPTION đặc biệt. Biến này sẽ trở thành Ngoại lệ do Người dùng Xác định cho chương trình này.

Bước 2:Nâng cao ngoại lệ

Bước tiếp theo sau khi khai báo một biến Exception là tăng ngoại lệ. Để nâng cao ngoại lệ trong PL / SQL, chúng tôi sử dụng câu lệnh Raise.

Câu lệnh Raise là một loại câu lệnh PL / SQL đặc biệt thay đổi luồng thực thi thông thường của mã. Ngay khi trình biên dịch gặp điều kiện tăng, nó sẽ chuyển quyền điều khiển sang trình xử lý ngoại lệ.

BEGIN
  IF var_divisor = 0 THEN
    RAISE ex_DivZero;
  END IF;

Ở đây điều kiện tăng được đi kèm với điều kiện IF-THEN. Với sự trợ giúp của điều này, chúng tôi có thể tránh các công tắc không mong muốn trong quá trình điều khiển của chương trình. Sử dụng Điều kiện If, chúng tôi đảm bảo rằng lỗi này sẽ chỉ xuất hiện khi số chia bằng 0.

var_result := var_dividend/var_divisor;
  DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);

Sau khi viết lôgic cho việc phát sinh lỗi, bạn có thể viết các câu lệnh thực thi khác của mã giống như chúng tôi đã làm ở đây. Sau câu lệnh Raise, chúng ta đang thực hiện phép tính chia và lưu trữ kết quả vào biến var_result, cũng như hiển thị nó trở lại dưới dạng đầu ra bằng cách sử dụng câu lệnh DBMS OUTPUT.

Bước 3:Xử lý ngoại lệ

Đó là phần chính của mã. Ở đây, chúng tôi viết logic cho ngoại lệ do người dùng xác định và cho trình biên dịch biết nó phải làm gì nếu và khi lỗi đó xảy ra.

EXCEPTION WHEN ex_DivZero THEN
    DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero');
END;
/

Ở đây chúng ta có trình xử lý ngoại lệ cho biến ex_DivZero. Trong phần xử lý ngoại lệ, chúng tôi có một câu lệnh DBMS OUTPUT sẽ được hiển thị khi người dùng của chúng tôi xác định lỗi ex_DivZero xảy ra.

Bây giờ, hãy nhóm tất cả các đoạn mã này lại với nhau.

Chia cho không lỗi bằng cách sử dụng PL / SQL Ngoại lệ do người dùng xác định trong Cơ sở dữ liệu Oracle

SET SERVEROUTPUT ON;
DECLARE
  var_dividend NUMBER := 24;
  var_divisor NUMBER := 0;
  var_result NUMBER;
  ex_DivZero EXCEPTION;
BEGIN
  IF var_divisor = 0 THEN
    RAISE ex_DivZero;
  END IF;
  var_result := var_dividend/var_divisor;
  DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
  EXCEPTION WHEN ex_DivZero THEN
      DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero');
END;
/

Trước khi chạy chương trình này, hãy đảm bảo rằng bạn đã bật SERVEROUTPUT, nếu không bạn sẽ không thể thấy kết quả.

Như trong Bước 1, chúng tôi đặt giá trị của số chia bằng 0, điều này sẽ lần lượt nâng cao người dùng xác định lỗi ex_DivZero vì điều này khi biên dịch mã trên, bạn sẽ thấy chuỗi “Lỗi Lỗi - Số chia của bạn là 0” giống như chuỗi mà chúng tôi đã chỉ định trong trình xử lý ngoại lệ của chúng tôi (bước 3).

Đó là hướng dẫn PL / SQL về cách khai báo ngoại lệ do người dùng xác định bằng cách sử dụng một biến kiểu dữ liệu Exception. Hy vọng bạn thích và học được một cái gì đó mới. Nếu vậy, hãy đảm bảo chia sẻ blog này trên phương tiện truyền thông xã hội của bạn và giúp đỡ những người khác trong việc học cùng với tôi và kênh của tôi. 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. Làm thế nào để nhập ký tự dòng mới trong Oracle?

  2. Cách loại bỏ “X hàng đã chọn” trong SQLcl &SQL * Plus (Oracle)

  3. Tạo bảng và chèn trong cùng một quy trình trong pl / sql

  4. Quản trị cơ bản của Oracle 12c Multitenant

  5. Oracle SQL, nối nhiều cột + thêm văn bản