问题描述
这是一个票据表示例:(billnr不是唯一的。renr,filnr,kassanr的组合是唯一的)
-printmapping mapping.txt
我需要renr,filnr,kassanr的唯一组合的总和(价格)(如果它们具有resnr 100)。 也就是说:10 + 15 + 6 = 31
我有这个查询:
id renr(billnr) filnr(store) kassanr(cashier) price res_nr(reservation)
10 1 2 3 10 100
11 1 2 3 15 null
12 1 2 3 6 null
13 1 2 4 120 101
当我执行此查询时,仅需7秒,就可以了! 但是当我在函数中编写此函数时,该函数需要21秒,我不明白为什么?!
select sum(rk.price)
from bill rk,(select rk1.renr,rk1.filnr,rk1.kassanr from bill rk1 where rk1.res_nr = :IN_n_resnr) tr
where rk.filnr = tr.filnr
and rk.kassanr = tr.kassanr
and rk.renr = tr.renr;
我试图用WITH CLAUSE编写函数。但这也需要21秒。
CREATE OR REPLACE FUNCTION FUN_TEST (IN_n_resnr in number) return number
is
v_return number := null;
begin
select sum(rk.price) into v_return
from bill rk,rk1.kassanr from bill rk1 where rk1.res_nr = :IN_n_resnr) tr
where rk.filnr = tr.filnr
and rk.kassanr = tr.kassanr
and rk.renr = tr.renr;
return(v_return);
end;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)