存储函数值

问题描述 投票:0回答:1

我有一个SQL查询,其中我正在计算函数cal(a,b)并执行减法,如下所示

case
when a=1 and b=0 then case when (c -cal(a,b)) >0 then cal(a,b) else c end
end

在这种情况下,我不得不两次致电cal(a,b),这很昂贵。

Oracle SQL中有什么方法可以存储此函数的值并且它是预先编写的SQL查询,因此我不能使用PL / SQL。

sql oracle11g stored-functions
1个回答
0
投票

取决于所使用的语句的使用方式,可以有一个表存储该结果,一个新列存储该结果,在两种情况下,值要么按需计算,要么使用触发器计算。也可能是存储cal(a,b)这样的结果的物化视图,但是同样,它取决于获得a和b,处理和存储以及检索结果的难易程度。

话虽这么说,Oracle缓存系统做得很好,但我不确定如果在相同的语句中使用相同的参数调用Oracle,为什么第二次处理cal(a,b)。

© www.soinside.com 2019 - 2024. All rights reserved.