SQLServer Transact-SQL cung cấp cơ chế kiểm soát lỗi bằng cách TRY … CATCH as in the language setting the application current (Java, C, PHP). Bài viết này giới thiệu các vấn đề chung trong việc sử dụng TRY … CATCH cùng với hàm RAISEERROR để quản lý lỗi khi thiết lập trình SQL trên SQL ServerVí dụ đơn giản về TRY … CATCHĐầu tiên, hãy xem xét một ví dụ đơn giản phát sinh lỗi Show Sau khi thực thi câu lệnh, ta thu được kết quả Lỗi đọc thông tin hàmDưới đây là một số hàm cung cấp thông tin về lỗi vừa phát sinh Sử dụng TRY … CATCH with TRANSACTIONTa có thể sử dụng kết hợp TRY … CATCH with TRANSACTION block. Bên trong khối GIAO DỊCH, lệnh thao tác với dữ liệu được đặt trong khối TRY để khi có bất kỳ lỗi nào xảy ra, chương trình có thể bắt được và xử lý Trước tiên, ta chuyển vào làm việc trong cơ sở dữ liệu tempdb Sau khi thực hiện các lệnh trên, ta có kết quả bảng dữ liệu như sau Use TRANSACTION to update a data series Sau khi thực hiện xong, ta thử truy vấn lại bảng T1, kết quả truy vấn vẫn giống như trước khi thực hiện GIAO DỊCH (do TRANSACTION bị lỗi nên đã ROLLBACK toàn bộ) Sử dụng TRY … CATCH with PROCEDURETrong ví dụ này, ta build Stored Procedure có sử dụng khối lệnh TRY … CATCH để bắt và xử lý lỗi. The 2 table A and B was started as after Kết quả thực thi lệnh tạo bảng A Lệnh tạo bảng B Kết quả thực thi lệnh tạo bảng B Create STORED PROCEDURE xóa bản ghi trong A as after Use this STORED PROCEDURE to delete a writing of A Error message as after Để có thể bắt và xử lý lỗi này ngay bên trong STORED PROCEDURE, ta cần sử dụng khối lệnh TRY … CATCH … Chỉnh sửa STORED PROCEDURE hiện tại để bổ sung TRY … CATCH Gọi thủ tục và bắt lỗi nếu có Kết quả thực thi lệnh gọi thủ tục trên Muốn hiểu giá trị của các thông số Msg. 547, Cấp độ. 16, Nhà nước. 0,… hãy đọc phần tiếp theo của bài viết RAISEERROR ở bên dưới Sử dụng lệnh RAISEERROR để phát sinh lỗiBảng dữ liệu bảng lưu danh sách sinh viên với dữ liệu mẫu như sau And a STORED PROCEDURE có tên insertStudent dùng để chèn thêm Student mới vào bảng Khi chèn dữ liệu, ta nhận thấy rằng mã sinh viên (trường rollno) phải có đúng 7 ký tự, bên ngoài tên của sinh viên (tên đầy đủ của trường) không được để trống. Trong trường hợp người dùng nhập dữ liệu sai, ta cần phát thông báo lỗi để người dùng biết và nhập lại dữ liệu đúng. Khi đó, ta sử dụng câu lệnh RAISE ERROR như sau Lưu ý giá trị SEVERITY phải lớn hơn 10 thì lệnh TRY … CATCH bên dưới mới bắt được lỗi Khi đó, ta nhận được thông báo lỗi Thông tin và cách sử dụng các tham số trong lời gọi RAISERROR tham khảo trong tài liệu MS SQLServer |