BEGIN
SELECT
締日
,締日区分
,支払日
INTO
WK_締日
,WK_締日区分
,WK_支払日
FROM 得意先マスタ
WHERE
得意先コード = '0001';
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN TOO_MANY_ROWS THEN
NULL;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('例外発生:'||SQLCODE||':'||SQLERRM);
END;
カーソル
CURSOR cur_main is
select ROWID
,取引先コード
,商品コード
,数量
,金額
,取引日付
from 取引データ
where 取引日付 = PM_DATE
and 更新済 is NULL;
ループ処理
OPEN cur_main;
LOOP
FETCH cur_main INTO
FLD_ROWID,
FLD_取引先,
FLD_商品,
FLD_数量,
FLD_金額,
FLD_日付;
if cur_main%NOTFOUND then
EXIT;
end if;
END LOOP;
CLOSE cur_main;
UPDATE => 対象行無ければレコードのみ作成
ループブロックを使用しているのは、INSERT でレコードのみ作成している為です
LOOP
UPDATE 得意先集計
set
更新日 = SYSDATE
,当月売上金額 = 当月売上金額 + FLD_金額
where
請求先 = FLD_取引先
and 経過月 = EXTRACT(month from FLD_日付)
;
IF SQL%NOTFOUND THEN
INSERT INTO 得意先集計
(請求先,経過月,当月売上金額,更新日)
VALUES(FLD_取引先,EXTRACT(month from FLD_日付),0,SYSDATE);
ELSE
EXIT;
END IF;
END LOOP;