UDFs can define CLOB or BLOB arguments and return values, passing them by locator.
Here is an example of how to declare a scalar function that uses LOB types.
/***** C source file name: udfsamp.c *****/ #define SQL_TEXT Latin_Text #include <sqltypes_td.h> void do_something( LOB_LOCATOR *a, LOB_RESULT_LOCATOR *result, char sqlstate[6] ) { ... }
The corresponding CREATE FUNCTION statement looks like this:
CREATE FUNCTION DO_SOMETHING(A BLOB AS LOCATOR) RETURNS BLOB AS LOCATOR LANGUAGE C NO SQL PARAMETER STYLE TD_GENERAL EXTERNAL NAME 'CS!udfsamp!td_udf/udfsamp.c';
For details on the LOB_LOCATOR and LOB_RESULT_LOCATOR C data types, see C Data Types.