--七年
Create Or Replace Function fn_group_order_show(v_msg Varchar2)
Return Number
Is
Begin
dbms_output.put_line(v_msg);
Return Length(v_msg);
End;
/
先建立一个自定义函数,先打印出入参,然后返回入参的字符长度。
--验证以下sql 是否会 在group by 子句再次自定义函数
SQL> set serveroutput on
SQL> With tmp As (
2 Select 'China' Name From dual
3 Union All
4 Select '中国' Name From dual
5 )
6 Select fn_group_order_show(Name), Count(1) From tmp Group By fn_group_order_show(Name);
FN_GROUP_ORDER_SHOW(NAME) COUNT(1)
------------------------- ----------
2 1
5 1
China
中国
SQL>
结果证明,group by后是不会再次执行 自定义函数的。因为入参只输出了一遍。