在流水线函数中包含“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 11g documentation和Oracle 12c documentation:
一个流水线表函数必须有一个不 返回值的return语句。 RETURN语句将控制权转移回 使用者,并确保下一次提取得到NO_DATA_FOUND 异常。
(这部分是相同的10g的文档,你的链接指向)
因此,尽管解析器可能会接受一个管道函数没有RETURN
声明,我想你应该总是将它添加到为安全侧。
IIRC它在10g中是强制性的,在以后的版本中是可选的。 – APC
从您的第一个链接引用:“流水线表函数必须具有不返回值的RETURN语句,RETURN语句将控制权转交给使用者,并确保下一个提取获取NO_DATA_FOUND异常。所以至少在10g中,这是强制性的(正如@APC已经提到的那样)。 –