Lập trình

Tổng hợp kinh nghiệm Oracle- Phần 1

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;

(Visited 194 times, 1 visits today)