13.47 PIPELINED Clause
Instructs the database to return the results of a table function iteratively.
Use only with a table function, to specify that it is pipelined. A pipelined table function returns a row to its invoker immediately after processing that row and continues to process rows. To return a row (but not control) to the invoker, the function uses the "PIPE ROW Statement".
A table function returns a collection type (a nested table or varray). You query table functions by using the TABLE
keyword before the function name in the FROM
clause of the query. For example:
SELECT * FROM TABLE(function_name(...))
the database then returns rows as they are produced by the function.
Topics
-
Examples (see PIPE ROW statement examples)
Syntax
pipelined_clause ::=
Semantics
pipelined_clause
PIPELINED { IS | USING }
PIPELINED
can appear only once in the function.
-
If you specify the keyword
PIPELINED
alone (PIPELINED
IS
...), then the PL/SQL function body must use thePIPE
keyword. This keyword instructs the database to return single elements of the collection out of the function, instead of returning the whole collection as a single value. -
You can specify the
PIPELINED
USING
implementation_type
clause to predefine an interface containing the start, fetch, and close operations. The implementation type must implement theODCITable
interface and must exist at the time the table function is created. This clause is useful for table functions implemented in external languages such as C++ and Java.If the return type of the function is
ANYDATASET
, then you must also define a describe method (ODCITableDescribe
) as part of the implementation type of the function.
Restriction on PIPELINED
You cannot specify PIPELINED
for a nested function.
Note:
You cannot run a pipelined table function over a database link. The reason is that the return type of a pipelined table function is a SQL user-defined type, which can be used only in a single database (as explained in Oracle Database Object-Relational Developer's Guide). Although the return type of a pipelined table function might appear to be a PL/SQL type, the database actually converts that PL/SQL type to a corresponding SQL user-defined type.
Related Topics
In this chapter:
In other chapters:
In other books:
-
Oracle Database Data Cartridge Developer's Guide for information about using pipelined table functions