Можете ли вы помочь мне понять, что не так с моим заявлением об обновлении?Кажется, что выполнение запроса на обновление выполняется очень медленно.Вот код:
BEGIN
SELECT a.policy_id,
a.peril_cd,
NVL (a.ri_cd, 0) ri_cd,
e.eff_date,
e.expiry_date,
( NVL (a.premium_amt, 0)
- NVL (a.treaty_prem, 0)
- NVL (a.facul_prem, 0))
* (e.numerator_factor / e.denominator_factor) def_prem_amt,
NVL (a.share_cd, 0),
NVL (a.item_no, 0) item_no,
NVL (a.date_tag, 0) date_tag
BULK COLLECT INTO vv_policy_id,
vv_peril_cd,
vv_ri_cd,
vv_eff_date,
vv_exp_date,
vv_def_prem_amt,
vv_share_cd,
vv_item_no,
vv_date_tag
FROM GIAC_RECAP_CURR_DTL_EXT a, gipi_polbasic b, giis_line c, gipi_invoice d, giac_deferred_gross_prem_pol e --added gipi_invoice by albert 01.25.2017 (GENQA SR 5848)
WHERE a.policy_id = b.policy_id
AND b.line_cd = c.line_cd
AND a.policy_id = d.policy_id
AND a.policy_id = e.policy_id
AND a.line_cd = e.line_cd
AND a.iss_cd = e.iss_cd
AND e.extract_year = vv_ext_yy
AND e.extract_mm = v_ext_mm;
IF SQL%FOUND
THEN
FORALL indx IN 1 .. vv_policy_id.COUNT
UPDATE GIAC_RECAP_CURR_DTL_EXT
SET eff_date = vv_eff_date (indx),
exp_date = vv_exp_date (indx),
def_prem_amt = vv_def_prem_amt (indx)
WHERE policy_id = vv_policy_id (indx)
AND peril_cd = vv_peril_cd (indx)
AND ri_cd = vv_ri_cd (indx)
AND share_cd = vv_share_cd (indx)
AND item_no = vv_item_no (indx)
AND date_tag = vv_date_tag (indx);
END IF;
END;
Вот информация из браузера сеансов Toad:
Он начал загружать оператор в 16:08., но на момент написания этого (5:00 вечера) он еще не завершил выполнение.Кстати, вот план объяснения:
Надеюсь, вы, ребята, можете мне помочь.Спасибо!