FOR acct IN (SELECT ucracct_cust_code,
ucracct_prem_code,
ucracct_cycl_code,
ucracct_status_ind
FROM ucracct
WHERE ucracct_cycl_code >= cycle_code_begin
AND ucracct_cycl_code <= cycle_code_end
AND (account_type = '%' OR
ucracct_status_ind = account_type)) --
LOOP
IF mod(rows_int, interval_int) = 0 THEN
FOR chg IN (SELECT uabopen_serv_num,
uabopen_srat_code,
uabopen_scat_code,
uabopen_charge_date,
uabopen_ar_trans,
uabopen_billed_chg,
uabopen_balance,
uabopen_budget_variance
FROM uabopen
WHERE uabopen_prem_code = acct.ucracct_prem_code
AND uabopen_cust_code = acct.ucracct_cust_code
AND uabopen_bad_debt_status_code IS NULL
UNION ALL SELECT uwbopen_serv_num,
uwbopen_srat_code,
uwbopen_scat_code,
uwbopen_charge_date,
uwbopen_ar_trans,
uwbopen_billed_chg,
uwbopen_balance,
uwbopen_budget_variance
FROM uwbopen
WHERE uwbopen_prem_code = acct.ucracct_prem_code
AND uwbopen_cust_code = acct.ucracct_cust_code
AND uwbopen_bad_debt_status_code IS NULL
) LOOP
adjustments :=0;
adjustments_copy :=0;
credits :=0 ;
credits_copy :=0;
payments_applied :=0;
payments_applied_copy :=0;
SELECT NVL(SUM(NVL(uabadje_balance, 0)), 0)
INTO adjustments
FROM uabadje
WHERE uabadje_ORigin_ar_trans = chg.uabopen_ar_trans
and uabadje_adjm_code <>'BUCA'; --ZD 11/05/2010
SELECT NVL(SUM(NVL(uwbadje_balance, 0)), 0)
INTO adjustments_copy
FROM uwbadje
WHERE uwbadje_ORigin_ar_trans = chg.uabopen_ar_trans
and uwbadje_adjm_code <>'BUCA';
我不全部发了,大的逻辑就是这些 索引建了,还有什么可以优化的吗???
另外存储过程怎么查看它的执行计划,,, 单独的sql语句可以,存储过程是不是要
完成后才能查看的到??
ucracct_prem_code,
ucracct_cycl_code,
ucracct_status_ind
FROM ucracct
WHERE ucracct_cycl_code >= cycle_code_begin
AND ucracct_cycl_code <= cycle_code_end
AND (account_type = '%' OR
ucracct_status_ind = account_type)) --
LOOP
IF mod(rows_int, interval_int) = 0 THEN
FOR chg IN (SELECT uabopen_serv_num,
uabopen_srat_code,
uabopen_scat_code,
uabopen_charge_date,
uabopen_ar_trans,
uabopen_billed_chg,
uabopen_balance,
uabopen_budget_variance
FROM uabopen
WHERE uabopen_prem_code = acct.ucracct_prem_code
AND uabopen_cust_code = acct.ucracct_cust_code
AND uabopen_bad_debt_status_code IS NULL
UNION ALL SELECT uwbopen_serv_num,
uwbopen_srat_code,
uwbopen_scat_code,
uwbopen_charge_date,
uwbopen_ar_trans,
uwbopen_billed_chg,
uwbopen_balance,
uwbopen_budget_variance
FROM uwbopen
WHERE uwbopen_prem_code = acct.ucracct_prem_code
AND uwbopen_cust_code = acct.ucracct_cust_code
AND uwbopen_bad_debt_status_code IS NULL
) LOOP
adjustments :=0;
adjustments_copy :=0;
credits :=0 ;
credits_copy :=0;
payments_applied :=0;
payments_applied_copy :=0;
SELECT NVL(SUM(NVL(uabadje_balance, 0)), 0)
INTO adjustments
FROM uabadje
WHERE uabadje_ORigin_ar_trans = chg.uabopen_ar_trans
and uabadje_adjm_code <>'BUCA'; --ZD 11/05/2010
SELECT NVL(SUM(NVL(uwbadje_balance, 0)), 0)
INTO adjustments_copy
FROM uwbadje
WHERE uwbadje_ORigin_ar_trans = chg.uabopen_ar_trans
and uwbadje_adjm_code <>'BUCA';
我不全部发了,大的逻辑就是这些 索引建了,还有什么可以优化的吗???
另外存储过程怎么查看它的执行计划,,, 单独的sql语句可以,存储过程是不是要
完成后才能查看的到??
uabopen_srat_code,
uabopen_scat_code,
uabopen_charge_date,
uabopen_ar_trans,
uabopen_billed_chg,
uabopen_balance,
uabopen_budget_variance
FROM uabopen;
2、create table t2 as SELECT uwbopen_serv_num,
uwbopen_srat_code,
uwbopen_scat_code,
uwbopen_charge_date,
uwbopen_ar_trans,
uwbopen_billed_chg,
uwbopen_balance,
uwbopen_budget_variance
FROM uwbopen;
3、第二个for循环
FOR chg IN (Select * FROM t1
WHERE uabopen_prem_code = acct.ucracct_prem_code
AND uabopen_cust_code = acct.ucracct_cust_code
AND uabopen_bad_debt_status_code IS NULL
UNION ALL Select * FROM t2
WHERE uwbopen_prem_code = acct.ucracct_prem_code
AND uwbopen_cust_code = acct.ucracct_cust_code
AND uwbopen_bad_debt_status_code IS NULL
)