function_spec ::=
FUNCTION function_name 
 [(parameter_declaration [, parameter_declaration]...)] 
RETURN datatype;

function_declaration | function_body ::=
 [CREATE [OR_REPLACE]] FUNCTION function_name
 [(parameter_declaration [, parameter_declaration]...)] 
RETURN datatype
 [AUTHID {CURRENT_USER | DEFINER}] 
 [PARALLEL_ENABLE] [DETERMINISTIC] {IS | AS}
 [{type_definition | item_declaration} 
 [{type_definition | item_declaration}]...] 
 [{function_declaration | procedure_declaration}   
 [{function_declaration | procedure_declaration}]...]
BEGIN statement [statement]...
 [EXCEPTION exception_handler [exception_handler]...] 
END [function_name];