ORA-32040 в процедуре, как переписать запрос - PullRequest
0 голосов
/ 30 сентября 2019

У меня ошибка ORA-32040 (рекурсивное предложение WITH должно использовать операцию UNION ALL) в моей процедуре. Я понятия не имею, как переписать эту вставку, чтобы объединить все.

У вас есть какие-либо предложения?

Я должен использовать with, потому что обе таблицы contract и an_mr содержат очень большой объем данных.


create or replace procedure calc_p (p_startdate NUMBER, p_end_date NUMBER, p_b_id NUMBER) is

BEGIN

    delete from rep_p where bank_id = p_b_id and rep_date between p_startdate and  p_end_date;

COMMIT; 

 insert into rep_p 

 with contract (suffix1, data_d, rep_date, bank_id, account_symbol, account_desc, cli_type, currency, depozyt, dz) as (
    select /*+ materialize*/ rep_date, bank_id, con_number, nvl(maturity_date - origin_date, 0) AS ok_zap 
            from contract@sb_am where description not in ('OVERNIGHT', 'O/N' )
            and bank_id = p_b_id
            AND rep_date BETWEEN p_startdate AND p_end_date
            )

 SELECT mr.suffix1, mr.data_d, ma.rep_date, bank_id, mr.account_symbol, account_desc,
        CASE
        WHEN mr.account_desc LIKE '%MIE%' THEN '04'
        WHEN mr.account_symbol LIKE '3731%' then '12'
        ELSE mr.cli_type END AS cli_type,
        ma.ok_zap, mr.rez_symbol, mr.waluta_symbol as currency,
        mr.saldo_ma_pln as outstanding, get_pd_account(account_symbol) AS depozyt,
        substr(TO_NUMBER(TO_CHAR(data_d, 'yyyymmdd')),7,2) as dz
        from wh_ods.an_mr mr
            left join contract ma
            on ma.bank_id = p_b_id
            and to_date(ma.rep_date) = mr.data_d
            and ma.con_number = mr.suffix1
        where saldo_ma_pln <> 0
        and get_pd_account(account_symbol) is not null 
        and nvl(cli_type,'20') not in ('01','02','02A')
        and  mr.data_d BETWEEN TO_DATE(p_startdate,'YYYYMMDD') AND TO_DATE(p_end_date,'YYYYMMDD');

end calc_p;


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...