create procedure add (in a int, in b int, out c int) deterministic as begin
c = :a + :b;
end
如果满足以下条件,则可以在创建新过程时使用关键字 DETERMINISTIC:
还可以通过更改配置部分中描述的配置参数,创建关键字为 DETERMINISTIC 的过程,即使它不满足上述条件。使用关键字 DETERMINISTIC 创建的过程被描述为“确定性过程”,无论它们在逻辑上是否确定。
缺省情况下,无法创建包含以下内容的确定性过程:
commit/rollback/exec)
根据责任创建确定性程序时,您可以跳过确定性检查。当您想要创建可能包含非确定性语句的逻辑确定性过程时,此命令非常有用。禁用检查时,请注意可以在用户之间共享缓存,因此,如果过程结果取决于当前用户(例如,过程安全性是调用者,并且存在用户特定的函数或使用具有分析权限的表),则它可能不会按预期运行。不建议禁用检查。
如果确定性过程在逻辑上是非确定性的,则可能需要以下内容:
以下配置参数参考 "sqlscript" 部分下的过程结果缓存 (PRC)。
名称价值缺省描述procedure_result_cache_gc_interval0-429496729560PRC 垃圾收集之间的分钟数。当此值更改时,下一个 GC 将在指定分钟后运行。将此值设置为 0(不推荐)将无限期暂停垃圾回收,直到设置非零值。