# data[].attributes.body
is a function that returns a table to the SQL statement where the function is invoked. The function can only be referenced in the FROM clause of a SELECT statement. A function of this type can be used to apply the processing power of SQL language to data that does not reside in the database or to convert such data into a database table.

# data[].attributes.body
is a function that returns a row of values. It can be used in a context that supports a row expression. It can also be used as a transformation function, which correlates attribute values of a structured type with values of a row. Row functions must be defined as SQL functions.

# data[].attributes.body
is one that is conceptually passed a set of similar values (a column) and returns a response with a single value. An example of an aggregation function is the built-in function AVG (). A column UDF can be defined, which originates from one of the aggregate built-in functions.

# data[].attributes.body
An interface function is defined for the database with a reference to several user-defined routines that are already known in the database. Interface functions can be aggregation functions only.

# data[].attributes.body
A derived function is defined for the database with a reference to another built-in or user-defined function that is already known in the database. Derived functions can be scalar functions or aggregate functions. They are useful for supporting existing functions with user-defined types.

# data[].attributes.body
An SQL function is defined in the database only through SQL statements, including, at a minimum, a RETURN statement. It can return a scalar value, a row, or a table. SQL functions cannot be aggregate functions.

# data[].attributes.body
An external function is defined in the database with a reference to an object code library and a function in that library that will be executed when the function is invoked. External functions cannot be aggregate functions.

# data[].attributes.body
A user-defined function resides in the schema where it was created or in the module where it was added or published.

# data[].attributes.body
User-defined module functions are created using the ALTER MODULE ADD FUNCTION or ALTER MODULE PUBLISH FUNCTION statements. A set of user-defined module functions is provided with the database manager in a set of modules in a schema called SYSIBMADM.

# data[].attributes.body
User-defined schema functions are created using the CREATE FUNCTION statement.

# data[].attributes.body
by the user are functions that are created by a SQL data definition statement and registered in the database manager in the catalog.

# data[].attributes.body
Built-in functions are generally defined in schemas beginning with 'SYS' (e.g., SYSIBM, SYSFUN and SYSIBMADM), although some are also defined in schemas beginning with 'DB2' (e.g., DB2MQ).

# data[].attributes.body
are functions that are provided with the database manager. Built-in functions include aggregate functions (e.g., AVG), operator functions (e.g., +), conversion functions (e.g., DECIMAL), scalar functions (e.g., CEILING), and table functions (e.g., BASE_TABLE).

# data[].attributes.body
A function represents a relationship between a set of input values and a set of result values. The input values of a function are called arguments. For example, you can pass arguments of type DATE and TIME to the TIMESTAMP function and the result will be TIMESTAMP.

# data[].attributes.body
A function is an operation denoted by a function name followed by one or more operands enclosed in parentheses.