Rol*_*lan 4 sql oracle oracle10g oraclereports
我正在创建一个多次使用2个嵌入式服务器功能的查询.
问题:函数搜索一个相当大的表,它们需要很长时间才能执行.
目标:使用子查询就像它是一个表一样,这样我就可以引用列而不运行函数来多次生成列.
Example Pseudocode:
Select general.column1, general.column2, general.column1-general.column2
from (select package.function1('I take a long time') column1,
package.function2('I take even longer') column2,
normal_column
from bigtable) general;
Run Code Online (Sandbox Code Playgroud)
Example Pseudocode:
Select general.column1, general.column2, general.column1-general.column2
from (select package.function1('I take a long time') column1,
package.function2('I take even longer') column2,
normal_column
from bigtable) general;
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码时,general.column1将引用column1语句中的函数,而不是它返回的数据(这最终是我所追求的).
我对SQL很新,所以感谢任何帮助,如果您需要更多信息,我会尽力提供.
谢谢!
我建议你使用子查询因子.第一个子查询只执行一次,然后用于查询的其余部分.
WITH function_result AS
(SELECT package.function1('I take a long time') column1
, package.function2('I take even longer') column2
FROM dual)
SELECT function_result.column1
, function_result.column2
, function_result.column1 - function_result.column2
, bigtable.normal_column
FROM bigtable
Run Code Online (Sandbox Code Playgroud)