1. 程式人生 > 實用技巧 >SQL-001:查詢門店零售商品批次無法帶出價格檢查程式碼.

SQL-001:查詢門店零售商品批次無法帶出價格檢查程式碼.

這是第一次學習寫PLSQL語句,練練手吧,在測試環境,真實環境均通過測試可用的。

主要解決問題:驗證有批次商品是否存在零售無法帶出銷售價格問題,查出的資料提前到批次檔案+單品檔案中檢查,找出問題排查處理。很大一部分原因是兩邊的商品不一致。

/* Formatted on 2020/11/11 18:03:34 (QP5 v5.326) */
DECLARE
    v_1                      BF_BATCHCODE.VBATCHCODE%TYPE;
    v_11                     BF_BATCHCODE.PK_INVBASDOC%TYPE;
    v_2                      RMB_ONHANDNUM.vbatchcode
%TYPE; v_22 RMB_ONHANDNUM.CINVBASID%TYPE; v2 RMB_ONHANDNUM%ROWTYPE; v1 BF_BATCHCODE%ROWTYPE; v_bf_batchcode_pk_corp bf_batchcode.pk_corp%TYPE; v_bf_batchcode_vname bf_batchcode.vname%TYPE; CURSOR c1 (v_batchcode BF_BATCHCODE.VBATCHCODE
%TYPE) IS SELECT * FROM bf_batchcode WHERE vbatchcode = v_batchcode AND vbatchcode IS NOT NULL; CURSOR c2 IS SELECT * FROM rmb_onhandnum WHERE nonhandnum > 0 AND vbatchcode IS NOT NULL; i INT := 0; vhcode RMB_ONHANDNUM.vbatchcode
%TYPE; BEGIN IF NOT c2%ISOPEN THEN OPEN c2; END IF; NULL; LOOP FETCH c2 INTO v2; EXIT WHEN c2%NOTFOUND; v_2 := v2.vbatchcode; v_22 := TRIM (v2.cinvbasid); vhcode := v_2; IF NOT c1%ISOPEN THEN OPEN c1 (vhcode); END IF; NULL; LOOP FETCH c1 INTO v1; EXIT WHEN c1%NOTFOUND; v_1 := v1.vbatchcode; v_11 := TRIM (v1.pk_invbasdoc); v_bf_batchcode_pk_corp := v1.pk_corp; v_bf_batchcode_vname := v1.vname; IF (v_1 = v_2) AND (NVL (v_11, '') <> NVL (V_22, '')) THEN i := i + 1; DBMS_OUTPUT.put_line ( '檢查結果顯示:' || i || ' 批次號=' || v_1 || ' pk_crop=' || v_bf_batchcode_pk_corp || ' ,vname=' || v_bf_batchcode_vname); END IF; END LOOP; IF c1%ISOPEN THEN CLOSE c1; END IF; NULL; END LOOP; IF c2%ISOPEN THEN CLOSE c2; END IF; END; /