CREATE [ OR REPLACE ] FUNCTION [ schema. ] function_name
[ ( parameter_declaration [, parameter_declaration] )
]
RETURN datatype
[ { invoker_rights_clause
| DETERMINISTIC
| parallel_enable_clause
| result_cache_clause
}...
]
{ { AGGREGATE | PIPELINED }
USING [ schema. ] implementation_type
| [ PIPELINED ] { IS | AS } { [ declare_section ] body | call_spec }
} ;