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