SQL-001:查詢門店零售商品批次無法帶出價格檢查程式碼.
阿新 • • 發佈:2020-12-07
這是第一次學習寫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; /