16.20 - C Function Definition for the Constructor Method - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL External Routine Programming

Advanced SQL Engine
Teradata Database
Release Number
Release Date
April 2020
Content Type
Programming Reference
Publication ID
English (United States)

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));