アカウントを調整するために API (クライアントが提供) を呼び出すために使用している次の PL/SQL コードがあります。
このブロックを書く際に何か問題があったり、より良い方法やアプローチがあれば、コードを改善したいと思います。
PS 残念ながら、私たちのクライアントはまだ製品に Oracle 8i を使用しています。
PLSQLコード
DECLARE
v_account_id account_adjustments.account_id%TYPE;
v_adj_no account_adjustments.adj_no%TYPE;
v_old_qty product_warehouse.new_qty%TYPE;
v_new_qty product_warehouse.new_qty%TYPE;
BEGIN
v_old_qty := NULL;
v_new_qty := NULL;
FOR acnt IN (SELECT *
FROM temp_table a) LOOP
SELECT a.new_qty
INTO v_old_qty
FROM product_warehouse a
WHERE ( a.product_no = acnt.product_no );
Adjust_accounts (in_service_product_no => acnt.product_no,
in_service_qty => acnt.qty,
out_account_id => v_account_id,
out_adj_no => v_adj_no);
SELECT b.new_qty
INTO v_new_qty
FROM product_warehouse b
WHERE ( b.product_no = acnt.product_no );
INSERT INTO account_year_todate
(product_no,
account_id,
adj_no,
qty_bad,
qty_warehouse,
qty_factory)
VALUES ( acnt.product_no,
v_account_id,
v_adj_no,
acnt.qty,
v_old_qty,
v_new_qty );
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.Put_line ('exceptions '
|| SQLERRM);
ROLLBACK;
END;