Firebird Documentation Index → Firebird 2.1 Language Ref. Update → DDL statements → EXTERNAL FUNCTION |
Table of Contents
Find a more recent version at Firebird 5.0 Language Reference: EXTERNAL FUNCTION
Table of Contents
Available in: DSQL, ESQL
Description: This statement makes an external function (UDF) available in the database.
Syntax:
DECLARE EXTERNAL FUNCTIONlocalname
[<arg_type_decl>
[,<arg_type_decl>
...]] RETURNS {<return_type_decl>
| PARAMETER1-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 CSTRINGs in the note near the end of the book).
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.
Available in: DSQL, ESQL
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).
Available in: DSQL
Added in: 2.0
Description: Alters an external function's module name and/or entry point. Existing dependencies are preserved.
Syntax:
ALTER EXTERNAL FUNCTIONfuncname
<modification>
[<modification>
]<modification>
::= ENTRY_POINT 'new-entry-point
' | MODULE_NAME 'new-module-name
'
Example:
alter external function Phi module_name 'NewUdfLib'
Firebird Documentation Index → Firebird 2.1 Language Ref. Update → DDL statements → EXTERNAL FUNCTION |