17.00 - 17.05 - 構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)
void
FNC_GetArrayTypeInfo_EON ( ARRAY_HANDLE       aryHandle,
                           array_info_eon_t  *arrayInfo,
                           bounds_t          *arrayScope)
ARRAY_HANDLE aryHandle
外部ルーチンへの入力パラメータとして定義されたARRAY型へのハンドル。
array_info_eon_t *arrayInfo
ARRAY入力パラメータについての情報を保持するバッファへのポインタ。
array_info_eon_t構造体は、sqltypes_td.hで次のように定義されています。
typedef struct array_info_eon_t {
   int numDimensions;
   int totalNumElements;
   element_info_eon_t elementInfo;
} array_info_eon_t;
説明
  • numDimensionsは、このARRAY型に定義された次元数です。
  • totalNumElementsは、このARRAY型に定義された構成要素の総数(すべての次元が対象)です。これを、ARRAY型の最大カーディナリティと呼ぶことがあります。
  • elementInfoは、ARRAY型の構成要素についての情報です。詳細は、次に示すelement_info_eon_t構造体の説明を参照してください。
element_info_eon_t構造体は、sqltypes_td.hで次のように定義されています。
typedef struct element_info_eon_t {
   dtype_et data_type;
   SMALLINT udt_indicator;
   CHARACTER udt_type_name[FNC_MAXNAMELEN_EON];
   INTEGER_td max_length;
   SMALLINT total_interval_digits;
   SMALLINT num_fractional_digits;
   charset_et charset_code;
} element_info_eon_t;
説明
  • data_typeは、ARRAYの構成要素のデータ型です。
  • udt_indicatorは、構成要素がUDTであるかどうかを示します。
    udt_indicatorの可能値は以下のとおりです。
    • 0 = UDTではありません
    • 1 = STRUCTURED型UDTです
    • 2 = DISTINCT型UDTです
    • 3 = Teradata専有内部UDTです
  • udt_type_nameは、構成要素に関連付けられたUDTの型名です(構成要素がUDTの場合)。
  • max_lengthは、構成要素の値の最大長(バイト単位)です。

    max_lengthは、FNC_GetArrayElementを呼び出してARRAYに含まれる1つの構成要素の値を取得するために、先に割り当てておく必要があるバッファのバイト単位のサイズとして使用できます。

  • total_interval_digitsは、特定の構成要素型に対する精度値です。例えば、DECIMAL(n,n)型、またはINTERVAL DAY(m) TO SECOND(n)の値mになります。この値を使用する型のリストは、attribute_info_t.total_interval_digitsのリストと同じです。
  • num_fractional_digitsは、特定のエレメント タイプに対する精度またはスケール値です。例えば、DECIMAL(m,n)型、またはINTERVAL DAY(m) TO SECOND(n)の値mになります。この値を使用する型のリストは、attribute_info_t.num_fractional_digitsのリストと同じです。
  • charset_codeは、構成要素に関連付けられたサーバー文字セットです(構成要素が文字型の場合)。
dtype_et、total_interval_digits、num_fractional_digits、またはcharset_etについての詳細は、FNC_GetStructuredAttributeInfo_EONを参照してください。
bounds_t *arrayScope
bounds_t構造体の配列。この配列では、n-D ARRAYの各次元のスコープを表わします。ARRAY型が1-Dの場合、この単一次元のデフォルト スコープ情報(1からnまで。nはARRAYのサイズ)は、arrayScope配列の最初のセルで得られます。ARRAY型がn-Dの場合、2番目以降の次元情報は必要に応じてセル2から5に格納されています。ここから、各次元の開始境界と終了境界が得られます。
bounds_t構造体は、sqltypes_td.hで次のように定義されています。
typedef struct bounds_t {    int lowerBound;    int upperBound; } bounds_t;
説明
  • lowerBoundは、次元の下位境界です。
  • upperBoundは、次元の上位境界です。
この配列は、値が5に設定されたFNC_ARRAYMAXDIMENSIONSのサイズになります。これは、ARRAYの最大次元数が5次元になることを意味します。
arrayScope配列は、次のように宣言する必要があります。
bounds_t arrayScope[FNC_ARRAYMAXDIMENSIONS];