2014-06-23 42 views
2

据我了解,只有OUT或IN OUT参数可用于过程而不是函数。然而,定义一个用户定义的聚合功能时,我发现这个签名:PL/SQL函数中的OUT/IN OUT参数

member FUNCTION ODCIAggregateIterate(self IN OUT DeviationImpl, 
value IN NUMBER) RETURN NUMBER 

这似乎是一个功能,但是,它有一个IN OUT参数。有人能解释我为什么会这样吗?

谢谢

回答

5

有没有这样的限制。函数可以有OUT或IN OUT参数。

但是,Oracle建议不要使用它们。

OUT和IN OUT参数阻止从普通SQL中使用函数,标记为DETERMINISTIC函数或用作结果缓存函数。因此,如果您想在SQL查询中使用该函数,这些类型的参数主要是一个问题。

你的例子更具体:它是一个成员函数,而不是全局函数。

+0

好的,我很困惑,因为通常定义是一个过程可以返回0 .. *值(通过这些OUT参数),而函数只能通过RETURN返回1个值,但后来我看到了我发布的示例。无论如何,谢谢你的回答! – leopik