DECLARE EXTERNAL FUNCTION
Input Parameters
The input parameters of the function follow the name of the function and are separated with commas.Each parameter has an SQL data type specified for it.Arrays cannot be used as function parameters.In addition to the SQL types, the CSTRING
type is available for specifying a null-terminated string with a maximum length of LENGTH
bytes.There are several mechanisms for passing a parameter from the Firebird engine to an external function, each of these mechanisms will be discussed below.
By default, input parameters are passed by reference.There is no separate clause to explicitly indicate that parameters are passed by reference.
When passing a NULL
value by reference, it is converted to the equivalent of zero, for example, a number ‘0
’ or an empty string (“''
”).If the keyword NULL
is specified after a parameter, then with passing a NULL
values, the null pointer will be passed to the external function.
Note
|
Declaring a function with the |
If BY DESCRIPTOR
is specified, then the input parameter is passed by descriptor.In this case, the UDF parameter will receive a pointer to an internal structure known as a descriptor.The descriptor contains information about the data type, subtype, precision, character set and collation, scale, a pointer to the data itself and some flags, including the NULL
indicator.This declaration only works if the external function is written using a handle.
Warning
|
When passing a function parameter by descriptor, the passed value is not cast to the declared data type. |
The BY SCALAR_ARRAY
clause is used when passing arrays as input parameters.Unlike other types, you cannot return an array from a UDF.