CREATE FUNCTION

    When is specified, the created function is valid and visible within the current session, but no persistent entry is made.

    Each permanent function is uniquely identified by its qualified function name and its parameter type list. qualified_function_name needs to be in the format of catalog.schema.function_name.

    Each temporary functions is uniquely identified by the function name. The name cannot be qualified, or collide with the name of an existing built-in function.

    In order to create a permanent function, the corresponding function namespace (in the format catalog.schema) must first be managed by a function namespace manager (See Function Namespace Managers).

    The optional clause causes the query to quietly replace the existing function if a function with the identical signature (function name with parameter type list) exists.

    The return_type needs to match the actual type of the routine body expression, without performing type coercion.

    A set of routine characteristics can be specified to decorate the function and specify its behavior. Each kind of routine characteristic can be specified at most once.

    Create a new function example.default.tan(double):

    Create the table example.default.tan(double) if it does not already exist, adding a function description and explicitly listing all the supported routine characteristics:

    Create a new temporary function square:

    , DROP FUNCTION,