我偶尔会遇到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。
任何见解都表示赞赏。
答案 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中的记录。
我很遗憾地说,我不能证明这一点,但是现在是时候回想过去了,真的很有意思得到答案。