确定性的标量用户定义函数始终在使用一组特定的输入值调用时,返回相同的结果。
使用此类功能时,无需每次重新计算结果 - 您可以参考缓存的结果。如果要显式确定用户定义的标量函数,则需要在创建函数时使用可选关键字 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 提供有关函数是否确定的信息。
不能在确定性标量用户定义的函数中指定以下非确定性函数。它们在创建函数时返回错误。