Bảng donhang(id, so_luong, trang_thai).
Quy định: không được duyệt đơn hàng có so_luong <= 0.
Hãy viết đoạn lệnh trong TRY ... CATCH:
trang_thai của mọi đơn hàng thành N'DA DUYET'.so_luong <= 0 thì dùng THROW 50001, 'Don hang khong hop le', 1; để chủ động sinh lỗi.COMMIT nếu không có lỗi.CATCH: ROLLBACK nếu còn transaction, rồi in ra số hiệu lỗi bằng ERROR_NUMBER().Cuối cùng in id và trang_thai của tất cả đơn hàng sắp xếp theo id.
Bảng donhang đã được tạo sẵn. Cột: id INT, so_luong INT, trang_thai NVARCHAR(20).
Số đơn hàng ≤1000.
Nếu có đơn không hợp lệ: dòng đầu là 50001, sau một dòng trống là danh sách id và trang_thai giữ nguyên. Nếu mọi đơn đều hợp lệ: không có dòng lỗi, chỉ có danh sách với trang_thai là DA DUYET.
THROW <so_hieu>, '<thong_bao>', <trang_thai>; yêu cầu số hiệu lỗi từ 50000 trở lên. ERROR_NUMBER() trong khối CATCH trả về số hiệu đó.
Ví dụ:
Đầu vào:
CREATE TABLE donhang(id INT, so_luong INT, trang_thai NVARCHAR(20));
INSERT INTO donhang(id,so_luong,trang_thai) VALUES (1,5,N'MOI'),(2,0,N'MOI');
Đầu ra:
50001
1 MOI
2 MOI
Đang tải editor...