在过程中多次调用已定义的函数或将函数结果存储在局部变量中并使用保持的变量值是最佳实践/更高效吗?
函数中返回的值是日期值。 (从extract_dates中选择start_date)
答案 0 :(得分:1)
如果可能的话,调用函数一次并重复使用返回值绝对是个好主意 - 例如循环时:
declare
l_start_date date;
begin
l_start_date := get_start_date_for_dept (10);
for r in (select id from big_table) loop
process_record (r.id, l_start_date );
end loop;
end;
这里调用函数一次,而不是big_table
有行的次数。如果每次调用都需要一毫秒,并且big_table
有10,000行,那么在循环内调用函数可能会在整个运行时间内增加10秒。这只是标准的编程良好实践。