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