The following code example implements the constructor method:
/* File: c_circle_t.c */ #define SQL_TEXT Latin_Text #include <sqltypes_td.h> #include <string.h> void circle_t_constructor( UDT_HANDLE *circleUdt, INTEGER *x_center, INTEGER *y_center, INTEGER *radius, UDT_HANDLE *colorUdt, UDT_HANDLE *resultCircleUdt, char sqlstate[6]) { INTEGER x, y; int nullIndicator; VARCHAR_LATIN color[31]; int length; int len; /* Set the x and y coordinates in the result circle UDT. */ nullIndicator = 0; FNC_SetStructuredAttribute(*resultCircleUdt, "x", x_center, nullIndicator, SIZEOF_INTEGER); nullIndicator = 0; FNC_SetStructuredAttribute(*resultCircleUdt, "y", y_center, nullIndicator, SIZEOF_INTEGER); /* Set the radius. */ nullIndicator = 0; FNC_SetStructuredAttribute(*resultCircleUdt, "radius", radius, nullIndicator, SIZEOF_INTEGER); /* Get the color UDT value and set it in the result circle UDT. */ FNC_GetDistinctValue(*colorUdt, color, SIZEOF_VARCHAR_LATIN_WITH_NULL(30), &length); nullIndicator = 0; len = strlen(color); FNC_SetStructuredAttribute(*resultCircleUdt, "color", color, nullIndicator, SIZEOF_VARCHAR_LATIN(len)); }