CREATE [OR REPLACE] FUNCTION [schema .] function
[( argument [ IN | OUT | IN OUT ] [NOCOPY] datatype
[, argument [ IN | OUT | IN OUT ] [NOCOPY] datatype]...
)
]
RETURN datatype
[{ invoker_rights_clause | DETERMINISTIC | parallel_enable_clause }
[ invoker_rights_clause | DETERMINISTIC | parallel_enable_clause ]...
]
{ { AGGREGATE | PIPELINED } USING [schema .] implementation_type
| [PIPELINED] { IS | AS } { pl/sql_function_body | call_spec }
}
;