この例では、関数my_array_udfの唯一のパラメータa1のデータ型として、CHARACTER要素型の一次元ARRAY型を使用します。
最初の手順として、該当する一次元ARRAY型を作成します。最初のCREATE TYPEリクエストでは、Oracle互換の構文を使用して、ARRAY型phonenumbers_aryを定義します。
CREATE TYPE phonenumbers_ary AS VARRAY(5) OF CHAR(10);
2番目のCREATE TYPEリクエストでは、Teradata-ANSI形式の構文を使用して、同じ型を定義します。
CREATE TYPE phonenumbers_ary AS CHAR(10) ARRAY[5];
以下のCREATE FUNCTIONリクエストでは、SQLパラメータ形式を使用して関数my_array_udfを作成し、唯一のパラメータa1のデータ型として一次元ARRAY型phonenumbers_aryを使用します。
CREATE FUNCTION my_array_udf(
a1 phonenumbers_ary)
RETURNS VARCHAR(100)
NO SQL
PARAMETER STYLE SQL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!my_array_udf!my_array_udf.c';
void my_array_udf (
ARRAY_HANDLE *ary_handle,
VARCHAR_LATIN *result,
int *indicator_ary,
int *indicator_result,
char sqlstate[6],
SQL_TEXT extname[129],
SQL_TEXT specific_name[129],
SQL_TEXT error_message[257])
{
/* body function */
}
以下のCREATE FUNCTIONリクエストでは、同じ関数を作成しますが、TD_GENERALパラメータ形式を使用します。
CREATE FUNCTION my_array_udf (
a1 phonenumbers_ary)
RETURNS VARCHAR(100)
NO SQL
PARAMETER STYLE TD_GENERAL
DETERMINISTIC
LANGUAGE C
EXTERNAL NAME 'CS!my_array_udf!my_array_udf.c';
void my_array_udf (
ARRAY_HANDLE *ary_handle,
VARCHAR_LATIN *result,
char sqlstate[6])
{ /* body function */
}