您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

确定性的标量函数

确定性的标量用户定义函数始终在使用一组特定的输入值调用时,返回相同的结果。

使用此类功能时,无需每次重新计算结果 - 您可以参考缓存的结果。如果要显式确定用户定义的标量函数,则需要在创建函数时使用可选关键字 DETERMINISTIC,如下例所示。高速缓存条目的生命周期绑定到查询执行(例如 SELECT/DML)。执行查询后,缓存将销毁。 示例代码create function sudf(in a int)returns ret int deterministic asbegin ret = :a;end;select sudf(a) from tab; 备注在系统视图 SYS.FUNCTIONS 中,列 IS_DETERMINISTIC 提供有关函数是否确定的信息。

非确定性函数

不能在确定性标量用户定义的函数中指定以下非确定性函数。它们在创建函数时返回错误。

  • nextval/currval of sequence

  • current_time/current_timestamp/current_date

  • current_utctime/current_utctimestamp/current_utcdate

  • rand/rand_secure

  • 窗口函数