Tạo stored procedure sp_DeactivateDormant với 2 tham số:
since (kiểu DATE);affected (INT) — số khách hàng đã bị khóa.Procedure chuyển sang INACTIVE mọi khách hàng đang ACTIVE mà không có lệnh nào (bảng Orders, qua các tài khoản của khách hàng) có order_date >= since.
Khách hàng không có tài khoản/lệnh nào cũng bị coi là "ngủ đông". Khách hàng NEW/INACTIVE không bị đụng tới.
affected phải bằng số dòng Customers thật sự bị cập nhật (SQL Server: @@ROWCOUNT, MySQL: ROW_COUNT()).
Hệ thống chấm gọi procedure với since = '2026-09-22' rồi in customer_id, status, affected của mọi khách hàng.
Bảng Customers, Accounts, Orders(account_id, order_date).
customer_id, status, affected (TAB), sắp theo customer_id tăng dần (cột affected lặp lại ở mọi dòng).
Ví dụ:
Đầu vào:
Đầu ra:
1 INACTIVE 16
2 ACTIVE 16
3 INACTIVE 16
4 INACTIVE 16
5 NEW 16
6 INACTIVE 16
7 INACTIVE 16
8 ACTIVE 16
9 INACTIVE 16
10 INACTIVE 16
11 ACTIVE 16
12 NEW 16
13 INACTIVE 16
14 ACTIVE 16
15 INACTIVE 16
16 ACTIVE 16
17 INACTIVE 16
18 ACTIVE 16
19 NEW 16
20 ACTIVE 16
21 INACTIVE 16
22 ACTIVE 16
23 INACTIVE 16
24 ACTIVE 16
25 ACTIVE 16
26 NEW 16
27 INACTIVE 16
28 INACTIVE 16
29 ACTIVE 16
30 INACTIVE 16
31 INACTIVE 16
32 ACTIVE 16
33 INACTIVE 16
34 INACTIVE 16
35 ACTIVE 16
36 INACTIVE 16
37 INACTIVE 16
38 INACTIVE 16
39 ACTIVE 16
40 ACTIVE 16
Giải thích:
Đang tải editor...