表函数是一个可以在查询语句的FROM子句中调用的函数,看起来就像一个关系表一样。表函数所返回的数据类型是集合(包括嵌套表或者VARRAY),而后者又可以通过TABLE操作符转换成可以在SQL语句中被查询的结构。
在FROM子句中调用函数,必须:
函数定义中的RETURN的数据类型必须是一个集合类型(嵌套表或者VARRAY)
确保函数的所有参数都是IN模式的,而且这些参数使用的都是SQL能够识别的数据类型;
要把这个函数调用嵌套到TABLE操作符中;
数据流函数:接收一个参数形式的结果集(CURSOR表达式),然后返回一个结合形式的结果集。意味着可以对这个返回的结果集使用TABLE操作符,然后通过SELECT语句对他进行查询。
管道流函数:也是返回一个集合形式的结果集表函数,但是返回动作和函数的结束不是同步进行的。即数据库不必等到函数完全结束,并把所有的结果行都保存到一个PL/SQL集合中才能开始返回数据。相反,只要某一行已经准备好了并放到了集合中,函数就可以通过管道把这行数据传递出去。