在流水线函数中包含“return”关键字的好处是什么?

问题描述:

包含“返回”关键字有什么好处吗?在流水线函数中包含“return”关键字的好处是什么?

一些网站在完成所有管道语句后,使用“return”关键字显示Oracle中管道化函数的示例。

功能不包括收益将工作得很好,像这样的:

 
CREATE OR REPLACE 
FUNCTION return_test 
RETURN qt_01_t PIPELINED IS 

BEGIN 

    PIPE ROW(qt_01_row_t('pipe this')); 

END; 

VS.

 
CREATE OR REPLACE 
FUNCTION return_test 
RETURN qt_01_t PIPELINED IS 

BEGIN 

    PIPE ROW(qt_01_row_t('pipe this')); 

    RETURN; 

END; 

Oracle documentation for pipelined functions

Ask Tom question on pipelined functions

+0

IIRC它在10g中是强制性的,在以后的版本中是可选的。 – APC

+0

从您的第一个链接引用:“流水线表函数必须具有不返回值的RETURN语句,RETURN语句将控制权转交给使用者,并确保下一个提取获取NO_DATA_FOUND异常。所以至少在10g中,这是强制性的(正如@APC已经提到的那样)。 –

按照Oracle 11g documentationOracle 12c documentation

一个流水线表函数必须有一个不 返回值的return语句。 RETURN语句将控制权转移回 使用者,并确保下一次提取得到NO_DATA_FOUND 异常。

(这部分是相同的10g的文档,你的链接指向)

因此,尽管解析器可能会接受一个管道函数没有RETURN声明,我想你应该总是将它添加到为安全侧。