Parameters and return values
The CREATE FUNCTION and CREATE PROCEDURE statements specify any parameters and return values for a C UDR.
For user-defined functions, the RETURN clause of the CREATE FUNCTION
statement specifies the return value. Use SQL data types for parameters
and the return value. These SQL data types must be compatible with
the DataBlade®
API data
types in the routine declaration. DataBlade
API, C,
and SQL data types lists
the SQL data types that correspond to the different DataBlade®
API data
types.
For example, suppose you have a C UDR with the following C declaration:
mi_double_precision *func1(parm1, parm2)
mi_integer parm1;
mi_double_precision *parm2;
The following CREATE FUNCTION statement registers the func1() user-defined
function:
CREATE FUNCTION func1(INTEGER, FLOAT)
RETURNS FLOAT;
Use the opaque SQL data type, POINTER, to specify a data type for
a C UDR whose parameter or return type has no SQL data type equivalent.
For example, suppose you have a C UDR that has the following C declaration:
my_private_struc *func2(parm1, parm2)
mi_integer parm1, parm2;
The following CREATE FUNCTION statement registers the func2() user-defined
function:
CREATE FUNCTION func2(INTEGER, INTEGER)
RETURNS POINTER;
This CREATE FUNCTION statement uses the POINTER data type because
the data structure to which func2() returns a pointer is a
private data type, not one that is surfaced to users by registering
it in the database.
Tip: If the C implementation of your
UDR requires an MI_FPARAM structure in its declaration, omit
this structure from the parameter list of the CREATE FUNCTION or CREATE
PROCEDURE statement. For more information about when a C UDR requires
an MI_FPARAM structure, see The MI_FPARAM argument.
For more information about how to declare a C UDR, see Code a C UDR.