UDFでは、UDT引数および戻り値を定義し、UDTハンドルを使用してそれらを渡すことができます。UDT型を使用するスカラー関数の宣言方法を示す例を以下に示します。
/***** C source file name: udfsamp.c *****/ #define SQL_TEXT Latin_Text #include <sqltypes_td.h> void do_something( UDT_HANDLE *aUDT, UDT_HANDLE *resultUDT, char sqlstate[6] ) { ... }
circleUDTと呼ばれるSTRUCTURED型UDTを作成し、do_something関数の入力パラメータおよび戻り値のデータ型として使用するとします。対応するCREATE FUNCTION文は、以下のようになります。
CREATE FUNCTION DO_SOMETHING(A circleUDT) RETURNS circleUDT LANGUAGE C NO SQL PARAMETER STYLE TD_GENERAL EXTERNAL NAME 'CS!udfsamp!td_udf/udfsamp.c';
動的なUDTを入力パラメータとして使用するには、対応するCREATE FUNCTION文は次のように記述します。
CREATE FUNCTION DO_SOMETHING(A VARIANT_TYPE) RETURNS circleUDT LANGUAGE C NO SQL PARAMETER STYLE TD_GENERAL EXTERNAL NAME 'CS!udfsamp!td_udf/udfsamp.c';
UDT_HANDLE Cデータ型の詳細については、Cデータ型を参照してください。