2014-06-23 76 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