eu tenho uma função que faz dois selects e depois soma os valores.
o problema é que se um dos selects não retorna nada, na hora da soma, ele exibe nenhum resultado...
qual a melhor maneira de se resolver isso? criando duas variaveis e guardando o resultado do select e depois somando? como eu declaro as variaveis aqui?
CREATE OR REPLACE Function FNCT1 (p_pdv In Varchar2) Return Number Is
p_base_1 Number;
Begin
select (retroativo.soma_retroativo + adiantamento.soma_adiantamento) as base_1
Into p_base_1
from (select sum(vl_pgto) as soma_retroativo
from tbl_retroativo
where pdv = p_pdv) retroativo,
(select sum(val_pg) as soma_adiantamento
from tbl_adiantamento
where cod_dealer = p_pdv) adiantamento;
Return p_base_adiantamento;
End;
CREATE OR REPLACE Function FNCT_1(p_pdv In Varchar2) Return Number Is
p_base_1 Number;
Begin
select (CASE
WHEN retroativo.soma_retroativo is null and adiantamento.soma_adiantamento is null THEN
(0)
WHEN retroativo.soma_retroativo is null and adiantamento.soma_adiantamento is not null THEN
(adiantamento.soma_adiantamento)
WHEN retroativo.soma_retroativo is not null and adiantamento.soma_adiantamento is null THEN
(retroativo.soma_retroativo)
WHEN retroativo.soma_retroativo is not null and adiantamento.soma_adiantamento is not null THEN
(retroativo.soma_retroativo + adiantamento.soma_adiantamento)
END) as base_adiantamento
Into p_base_1
from (select sum(vl_pgto) as soma_retroativo
from tbl_retroativo
where pdv = p_pdv) retroativo,
(select sum(val_pg) as soma_adiantamento
from tbl_adiantamento
where cod_dealer = p_pdv) adiantamento;
Return p_base_1;
End;
CREATE OR REPLACE Function FNCT1 (p_pdv In Varchar2) Return Number Is
p_base_1 Number;
Begin
select (NVL(retroativo.soma_retroativo,0) + NVL(adiantamento.soma_adiantamento,0)) as base_1
Into p_base_1
from (select sum(vl_pgto) as soma_retroativo
from tbl_retroativo
where pdv = p_pdv) retroativo,
(select sum(val_pg) as soma_adiantamento
from tbl_adiantamento
where cod_dealer = p_pdv) adiantamento;
Return p_base_adiantamento;
End;