在流水线函数中包含“return”关键字有啥好处?
Posted
技术标签:
【中文标题】在流水线函数中包含“return”关键字有啥好处?【英文标题】:Any benefit to including the "return" keyword in a pipelined function?在流水线函数中包含“return”关键字有什么好处? 【发布时间】:2017-03-16 17:01:45 【问题描述】:包含“return”关键字有什么好处吗?
一些网站在完成所有管道语句后使用“return”关键字展示了 Oracle 中管道函数的示例。
不包括 return 的函数也可以正常工作,例如:
创建或替换 功能返回测试 返回 qt_01_t 流水线是 开始 管道行(qt_01_row_t('管道这个')); 结尾;VS.
创建或替换 功能返回测试 返回 qt_01_t 流水线是 开始 管道行(qt_01_row_t('管道这个')); 返回; 结尾;Oracle documentation for pipelined functions
Ask Tom question on pipelined functions
【问题讨论】:
IIRC 在 10g 中是强制的,在以后的版本中是可选的。 引用您的第一个链接:“流水线表函数必须具有不返回值的 RETURN 语句。RETURN 语句将控制权转移回消费者并确保下一次提取获得 NO_DATA_FOUND例外。”所以至少在 10g 中,这是强制性的(正如@APC 已经提到的)。 【参考方案1】:根据Oracle 11g documentation和Oracle 12c documentation:
流水线表函数必须有一个 RETURN 语句,该语句不 返回一个值。 RETURN 语句将控制权转移回 消费者并确保下一次提取获得 NO_DATA_FOUND 例外。
(此部分与您的链接指向的 10g 文档相同)
因此,尽管解析器可能会接受没有RETURN
语句的流水线函数,但我想您应该始终添加它以确保安全。
【讨论】:
以上是关于在流水线函数中包含“return”关键字有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章