DECLARE EXTERNAL FUNCTION
<< EXTERNAL FUNCTION | FB 2.5 Language Reference | ALTER EXTERNAL FUNCTION >>
<< EXTERNAL FUNCTION | FB 2.1 Language Reference | ALTER EXTERNAL FUNCTION >>
<< CREATE OR ALTER TRIGGER | FB 2.0 Language Reference | DECLARE FILTER >>
DECLARE EXTERNAL FUNCTION
Description
This statement makes an external function (UDF) known to the database.
Syntax
DECLARE EXTERNAL FUNCTION localname [<arg_type_decl> [, <arg_type_decl> ...]] RETURNS {<return_type_decl> | PARAMETER 1-based_pos} [FREE_IT] ENTRY_POINT 'function_name' MODULE_NAME 'library_name' <arg_type_decl> ::= sqltype [BY DESCRIPTOR] | CSTRING(length) <return_type_decl> ::= sqltype [BY {DESCRIPTOR|VALUE}] | CSTRING(length)
Restrictions: The BY DESCRIPTOR
passing method is not supported in ESQL.
You may choose localname
freely; this is the name by which the function will be known to your database. You may also vary the length
argument of CSTRING
parameters (more about CSTRING
s in the note near the end of the book).
BY DESCRIPTOR
parameter passing
Available in: DSQL
Added in: 1.0
Description
Firebird introduces the possibility to pass parameters BY DESCRIPTOR
; this mechanism facilitates the processing of NULL
s in a meaningful way. Notice that this only works if the person who wrote the function has implemented it. Simply adding BY DESCRIPTOR
to an existing declaration does not make it work – on the contrary! Always use the declaration block provided by the function designer.
RETURNS PARAMETER n
Added in: IB 6
Description
In order to return a BLOB, an extra input parameter must be declared and a RETURNS PARAMETER n
clause added – n
being the position of said parameter. This clause dates back to InterBase 6 beta, but somehow didn't make it into the Language Reference (it is documented in the Developer's Guide though).
See also:
External functions (UDFs)
User-defined function (UDF)
UDFs callable as void functions
DECLARE EXTERNAL FUNCTION
(incorporating a new UDF library)
ALTER EXTERNAL FUNCTION
DROP EXTERNAL FUNCTION
Threaded Server and UDFs
Passing NULL
to UDFs in Firebird 2
How to write an internal UDF function
Firebird Null Guide: NULL
<–> non-NULL
conversions you didn't ask for
Using descriptors with UDFs
back to top of page
<< EXTERNAL FUNCTION | FB 2.5 Language Reference | ALTER EXTERNAL FUNCTION >>
<< EXTERNAL FUNCTION | FB 2.1 Language Reference | ALTER EXTERNAL FUNCTION >>
<< CREATE OR ALTER TRIGGER | FB 2.0 Language Reference | DECLARE FILTER >>