Bài toán thực tế:
Trong Database hiện tại có nhiều bảng dùng 1 flag chung để phân loại hình thức đăng kí : qua WEB, hoặc bằng giấy. FLAG_KBN =1 (web), 2 (giấy) và đang triển khai cho nhiều schema.
Khách hàng muốn confirm trên môi trường thật có bao nhiêu schema đang dùng FLAG_KBN=2 (giấy)
Hướng giải quyết: Do môi trường thật không được dùng tool để view, vì sợ rò rỉ dữ liệu nên tạo file sql và batch để chạy confirm được nếu schema đó có dùng thì hiển thị thông báo
Có 2 vấn đề :
1.Tính tổng các record các bảng và gán giá trị vào 1 biến:
2. Lấy biến đó dựa theo giá trị để phán định
// Sum flag_kbn
VARIABLE CNT_SUM NUMBER;
//Result
VARIABLE RESULT VARCHAR(50);
DECLARE
BEGIN
SELECT SUM(CNT) into:CNT_SUM
FROM (
SELECT COUNT(*) AS CNT FROM TABLE1 WHERE FLAG_KBN=’2′ UNION ALL
SELECT COUNT(*) AS CNT FROM TABLE2 WHERE FLAG_KBN=’2′ UNION ALL
SELECT COUNT(*) AS CNT FROM TABLE3 WHERE FLAG_KBN=’2′ UNION ALL
SELECT COUNT(*) AS CNT FROM TABLE4 WHERE FLAG_KBN=’2′ UNION ALL
SELECT COUNT(*) AS CNT FROM TABLE5 WHERE FLAG_KBN=’2′ UNION ALL
);
//Result
IF (:CNT_SUM = 0 ) THEN
:RESULT := ‘Don’t use FLG_KBN=2’;
ELSE
:RESULT := ‘Using FLG_KBN=2’;
END IF
END;
PRINT RESULT;
EXIT;