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 } } ;