Invoking scalar functions or methods
The invocation of built-in scalar functions, user-defined scalar-functions and methods is very similar. Scalar functions and methods can only be invoked where expressions are supported within an SQL statement.
Before you begin
- For built-in functions, SYSIBM must be in the CURRENT PATH special register. SYSIBM is in CURRENT PATH by default.
- For user-defined scalar functions, the function must have been created in the database using either the CREATE FUNCTION or CREATE METHOD statement.
- For external user-defined scalar functions, the library or class file associated with the function must be in the location specified by the EXTERNAL clause of the CREATE FUNCTION or CREATE METHOD statement.
- To invoke a user-defined function or method, a user must have EXECUTE privilege on the function or method. If the function or method is to be used by all users, the EXECUTE privilege on the function or method can be granted to PUBLIC. For more privilege related information see the specific CREATE statement reference.
Procedure
To invoke a scalar UDF or method:
Include a reference to it within an expression contained
in an SQL statement where it is to process one or more input values.
Functions and methods can be invoked anywhere that an expression
is valid. Examples of where a scalar UDF or method can be referenced
include the select-list of a query or in a VALUES clause.
Example
For example, suppose that you have created a user-defined
scalar function called TOTAL_SAL that adds the base salary and bonus
together for each employee row in the EMPLOYEE table.
CREATE FUNCTION TOTAL_SAL
(SALARY DECIMAL(9,2), BONUS DECIMAL(9,2))
RETURNS DECIMAL(9,2)
LANGUAGE SQL
CONTAINS SQL
NO EXTERNAL ACTION
DETERMINISTIC
RETURN SALARY+BONUSThe following is a SELECT
statement that makes use of TOTAL_SAL:
SELECT LASTNAME, TOTAL_SAL(SALARY, BONUS) AS TOTAL
FROM EMPLOYEE