例: パラメータ定義での1次元ARRAYの使用 - Teradata Database - Teradata Vantage NewSQL Engine - 例: パラメータ定義での1次元ARRAYの使用、CREATE FUNCTION (外部形式)およびREPLACE FUNCTION (外部形式)構文の文。

Teradata Vantage™ SQLデータ定義言語 構文規則および例

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

この例では、関数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 */
}