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