使用`SELECT`来调用一个函数

时间:2015-12-22 15:07:22

标签: oracle plsql

我偶尔会遇到SELECT...INTO...FROM DUAL用于调用函数的示例 - 例如:

SELECT some_function INTO a_variable FROM DUAL;
使用

而不是

a_variable := some_function;

我对此的看法是,这不是一个好习惯,因为A)它使得不清楚函数被调用,而B)它的效率低,因为它强制从PL / SQL引擎转换到SQL引擎(也许今天少了一个问题)。

任何人都可以解释为什么会这样做,例如在早期的PL / SQL编码中,为了调用函数,这是必要的吗?我正在查看的代码可能早于Oracle 8。

任何见解都表示赞赏。

1 个答案:

答案 0 :(得分:3)

这种做法可以追溯到之前 PLSQL和Oracle 7.如前所述,Oracle7中的分配是可能的(当然还有最佳实践)。

在Oracle 7之前,有两个广泛使用的工具需要使用从双重选择...变成

一方面,曾经有一个名为RPT的Oracle工具,某种报告生成器。 RPT可用于创建批处理。它有两种宏,可以组合起来实现我们今天使用PLSQL的目的。我的第一个Oracle工作涉及调试由一个程序生成的PLSQL,该程序采用RPT批处理并自动将它们转换为PLSQL。 2000年之后不久,我扔掉了我唯一的RPT手册。

另一方面,有Oracle Forms 2.x及其Menu组件。 Oracle菜单中的上下文切换通常使用选择...来自双重; 我仍然记得当我发现一个难以处理的Bug是由总共 6 Dual中的记录。

我很遗憾地说,我不能证明这一点,但是现在是时候回想过去了,真的很有意思得到答案。