Viết ghi chú về xử lý lỗi mysql
Trong bài đăng này, tôi đang chia sẻ bản trình diễn đầy đủ về cách quản lý xử lý lỗi/ngoại lệ trong Thủ tục lưu trữ của MySQL Show Bất cứ khi nào một ngoại lệ xảy ra trong một thủ tục được lưu trữ, điều rất quan trọng là phải xử lý nó bằng cách hiển thị các thông báo lỗi thích hợp Nếu bạn không xử lý ngoại lệ, sẽ có khả năng ứng dụng bị lỗi với ngoại lệ nhất định trong thủ tục được lưu trữ
MySQL cung cấp Handler để xử lý ngoại lệ trong thủ tục lưu trữ Dưới đây là minh họa đầy đủ về một trình xử lý với các ví dụ 1 2 3 4 5 6 7 8 9 10 /*Tạo cơ sở dữ liệu nhân viên cho demo */ TẠO CƠ SỞ DỮ LIỆU Nhân viên; /*Tạo bảng chi tiết nhân viên mẫu. */ TẠO BẢNG nhân viên. tbl_EmployeeChi tiết ( SỐ LƯỢNG EmpID ,EmpName VARCHAR(50) ,Địa chỉ email VARCHAR(50) ,CONSTRAINT pk_tbl_EmployeeDetails_EmpID KHÓA CHÍNH (EmpID) ) ĐỘNG CƠ = InnoDB; Cách khai báo handler trong thủ tục store Cú pháp xử lý. 1 KHAI BÁO handler_action HANDLER CHO giá_trị_điều_kiện. bản tường trình Ba loại Handler_Action
Loại điều kiện Giá trị
Làm thế nào để viết trình xử lý trong thủ tục được lưu trữ? E. g 1 2 3 4 KHAI BÁO TIẾP TỤC XỬ LÝ CHO SQLEXCEPTION SELECT 'Đã xảy ra lỗi'; KHAI BÁO TIẾP TỤC XỬ LÝ CHO SQLEXCEPTION SET IsError=1; KHAI BÁO THOÁT XỬ LÝ CHO SQLEXCEPTION SET IsError=1; KHAI THÁC THOÁT XỬ LÝ CHO SQLSTATE '23000' SET IsError = 1; Trên đây là bốn ví dụ xử lý khác nhau. Bây giờ, tôi sẽ chèn một giá trị trùng lặp vào cột EmpID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 PHÂN PHỐI // TẠO THỦ TỤC Nhân viên. usp_InsertEmployeeChi tiết ( InputEmpID INTEGER ,InputEmpName VARCHAR(50) ,InputEmailĐịa chỉ VARCHAR(50) ) /*************************************************** Tên tác giả. Anvesh Patel ngày tạo ra. 2015-05-20 Sự miêu tả. Đây là thủ tục được lưu trữ demo để chèn bản ghi vào bảng với thích hợp xử lý lỗi. Về cơ bản cho www. thương hiệu. độc giả com *************************************************** BẮT ĐẦU KHAI BÁO TIẾP TỤC XỬ LÝ CHO SQLEXCEPTION SELECT 'Đã xảy ra lỗi'; CHÈN VÀO Nhân viên. tbl_EmployeeChi tiết ( EmpID ,EmpName ,Địa chỉ email ) GIÁ TRỊ ( Đầu vàoEmpID ,InputEmpName ,Đầu vàoĐịa chỉ email ); CHỌN *TỪ nhân viên. tbl_EmployeeChi tiết; CHẤM DỨT // KHOẢN KHÁC ; Trong SP ở trên, tôi đã xác định trình xử lý TIẾP TỤC với thông báo ngoại lệ tùy chỉnh của mình Bây giờ, hãy gọi SP trên hai lần với cùng một EmpID Lần đầu tiên, nó sẽ thực thi thành công, nhưng lần thứ hai, nó sẽ đưa ra thông báo lỗi tùy chỉnh Như chúng tôi đã định nghĩa trình xử lý TIẾP TỤC, do đó, nó sẽ chỉ hiển thị thông báo lỗi và TIẾP TỤC sang phần tiếp theo của câu lệnh CHỌN Hãy xem nào, 1 2 GỌI nhân viên. usp_InsertEmployeeDetails (1,'Anvesh','anvesh@gmail. com'); GỌI nhân viên. usp_InsertEmployeeDetails (1,'Roy','Roy@gmail. com'); Trên đây là hai cuộc gọi khác nhau có cùng giá trị EmpID. Cuộc gọi đầu tiên thực hiện mà không có bất kỳ thông báo lỗi nào và cuộc gọi thứ hai thực hiện với thông báo lỗi Kết quả của cuộc gọi thứ hai Như chúng tôi đã định nghĩa TIẾP TỤC, vì vậy bạn có thể tìm thấy hai kết quả trong hình trên. Một là thông báo lỗi tùy chỉnh của chúng tôi và thứ hai là kết quả của câu lệnh CHỌN đã xác định. Bây giờ, hãy kiểm tra trình xử lý EXIT Vui lòng sửa đổi trình xử lý của bạn và thay CONTINUE bằng EXIT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 PHÂN PHỐI // TẠO THỦ TỤC Nhân viên. usp_InsertEmployeeChi tiết ( InputEmpID INTEGER ,InputEmpName VARCHAR(50) ,InputEmailĐịa chỉ VARCHAR(50) ) /*************************************************** Tên tác giả. Anvesh Patel ngày tạo ra. 2015-05-20 Sự miêu tả. Đây là thủ tục được lưu trữ demo để chèn bản ghi vào bảng với thích hợp xử lý lỗi. Về cơ bản cho www. thương hiệu. độc giả com *************************************************** BẮT ĐẦU KHAI BÁO THOÁT XỬ LÝ CHO SQLEXCEPTION CHỌN 'Đã xảy ra lỗi'; CHÈN VÀO Nhân viên. tbl_EmployeeChi tiết ( EmpID ,EmpName ,Địa chỉ email ) GIÁ TRỊ ( Đầu vàoEmpID ,InputEmpName ,Đầu vàoĐịa chỉ email ); CHỌN *TỪ nhân viên. tbl_EmployeeChi tiết; CHẤM DỨT // KHOẢN KHÁC ; Gọi với cùng một tham số 1 GỌI nhân viên. usp_InsertEmployeeDetails (1,'Roy','Roy@gmail. com'); Kết quả là một thông báo lỗi duy nhất và bạn không thể tìm thấy hai kết quả như chúng tôi đã xác định EXIT để thoát khỏi mã khi xảy ra lỗi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 PHÂN PHỐI // TẠO THỦ TỤC Nhân viên. usp_InsertEmployeeChi tiết
( InputEmpID INTEGER ,InputEmpName VARCHAR(50) ,InputEmailĐịa chỉ VARCHAR(50) ,ra IsError INTEGER ) /*************************************************** Tên tác giả. Anvesh Patel ngày tạo ra. 2015-05-20 Sự miêu tả. Đây là thủ tục được lưu trữ demo để chèn ghi vào bảng với xử lý lỗi thích hợp Về cơ bản cho www. thương hiệu. độc giả com *************************************************** BẮT ĐẦU KHAI BÁO TIẾP TỤC XỬ LÝ CHO SQLEXCEPTION SET IsError=1;
CHÈN VÀO Nhân viên. tbl_EmployeeChi tiết ( EmpID ,EmpName ,Địa chỉ email ) GIÁ TRỊ ( Đầu vàoEmpID ,InputEmpName ,Đầu vàoĐịa chỉ email ); CHỌN *TỪ nhân viên. tbl_EmployeeChi tiết; CHẤM DỨT // KHOẢN KHÁC ; Bây giờ gọi SP ở trên và chọn tham số đầu ra 1 2 GỌI nhân viên. usp_InsertEmployeeDetails (1,'Roy','Roy@gmail. com',@IsError); CHỌN @IsError; Bây giờ Kết quả là Trên đây là minh họa đơn giản về Xử lý lỗi trong MySQL. Bạn cũng có thể sử dụng SQLSTATE hiển thị các thông báo lỗi mặc định của MySQL Ngày 21 tháng 5 năm 2015 Anvesh Patel Mời bạn tham khảo các bài viết liên quan khác
Cách tạo công việc trong PostgreSQL PostgreSQL XML Type Bình luận. 20
|