この例では、多次元ARRAY型を使用して、INTEGER要素型を定義します。
最初の手順として、該当する多次元ARRAY型を作成します。最初のCREATE TYPEリクエストでは、Oracle互換の構文を使用して、ARRAY型phonenumbers_aryを定義します。
CREATE TYPE 3d_array AS VARRAY (1:5)(1:7)(1:20) OF INTEGER;
2番目のCREATE TYPEリクエストでは、Teradata-ANSI形式の構文を使用して、同じ型を定義します。
CREATE TYPE 3d_array AS INTEGER ARRAY[1:5][1:7][1:20];
以下のCREATE FUNCTIONリクエストでは、SQLパラメータ形式を使用して関数array_udfを作成し、唯一のパラメータa1のデータ型として多次元ARRAY型3d_arrayを使用します。
CREATE FUNCTION array_udf( a1 3d_array) RETURNS VARCHAR(100) NO SQL PARAMETER STYLE SQL DETERMINISTIC LANGUAGE C EXTERNAL NAME 'CS!array_udf!array_udf.c!F!my_array_udf'; 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 array_udf ( a1 3d_array) RETURNS VARCHAR(100) NO SQL PARAMETER STYLE TD_GENERAL DETERMINISTIC LANGUAGE C EXTERNAL NAME 'CS!array_udf!array_udf.c!F!my_array_udf'; void my_array_udf ( ARRAY_HANDLE *ary_handle, VARCHAR_LATIN *result, char sqlstate[6]) { /* body function */ }