Доброго времени суток, светлые умы.
Необходимо сложить два сложных запроса (с подвложенными в них подзапросами):
select ...
from ...
where ...
и
select ...
from ...
where ...
Выдают они одно и тоже значие и по типу и по количеству - считают сумму, т.е. можно было бы написать "union all" и сложить:
select sum (первый select union all второй select) from dual
но тогда мои два запроса оказываются подзапросами и в них не передаются параметры одного "глобального" select'а
Решил написать функцию (по примеру, здесь нашел) но почему-то она не работает с числами, а только с типом VARCHAR2
Текст:
CREATE OR REPLACE FUNCTION fr_sin_summass(mass1 SYS_REFCURSOR,
mass2 SYS_REFCURSOR)
RETURN NUMBER IS
rs NUMBER(17, 2);
sum1 NUMBER(17, 2);
sum2 NUMBER(17, 2);
BEGIN
LOOP
FETCH mass1 INTO rs;
EXIT WHEN mass1%NOTFOUND;
sum1 := sum1 + rs;
END LOOP;
CLOSE mass1;
LOOP
FETCH mass2 INTO rs;
EXIT WHEN mass2%NOTFOUND;
sum2 := sum2 + rs;
END LOOP;
CLOSE mass2;
RETURN sum1 + sum2;
END fr_sin_summass;
Запускаю для проверки так:
select fr_sin_summass((cursor(select 123 from dual)), (cursor(select 2 from dual))) from dual
В итоге выдает пустую строчку.