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_GetStructuredAttributeInfo ( UDT_HANDLE        udtHandle,
                                 int               attributePosition,
                                 int               bufSize,
                                 attribute_info_t *attributeArray )
UDT_HANDLE udtHandle
外部ルーチンへの入力パラメータであると定義されているSTRUCTURED型UDTへのハンドル。
int attributePosition
この呼び出しが属性の1つまたはすべての属性に関する情報を戻すかどうか。
  • 0以上の場合、値は、この呼び出しが情報を戻すSTRUCTURED型UDTの属性の位置を示します。最初の属性の位置は0です。
  • -1の場合、この呼び出しは、すべての属性に関する情報を戻します。
int bufSize
attributeArray引数に割り当てられたバイト単位のサイズ。
attribute_info_t *attributeArray
attributePositionで指定される、STRUCTURED型UDTの要求された属性(複数可)を記述する、1つ以上のattribute_info_t構造体の配列。
attribute_info_t構造体は、sqltypes_td.hで以下のように定義されています。
typedef struct attribute_info_t
{
   INTEGER          attrIndex;
   dtype_et         data_type;
   CHARACTER        attribute_name[256];
   SMALLINT         udt_indicator;
   CHARACTER        udt_type_name[256];
   INTEGER          max_length;
   FNC_LobLength_t  lob_length;
   SMALLINT         total_interval_digits;
   SMALLINT         num_fractional_digits;
   charset_et       charset_code;
} attribute_info_t;
条件
  • attrIndexは、STRUCTURED型の属性の位置を指定します。最初の属性の位置は0です。
  • data_typeは、属性のデータ型を指定します。sqltypes_td.hヘッダー ファイルは、dtype_etを以下のように定義しています。
    typedef int dtype_et;

    有効な値は、sqltypes_td.hのdtype_en列挙定数で以下のように定義されています。有効な値の一覧は、FNC_CallSPdtype[]引数を参照してください。

  • attribute_nameは、属性名を指定します。

    列名により定義される属性があり、AS句がない動的UDTの場合、属性名は列名です。

  • udt_indicatorは、属性がUDTであるかどうか、およびその場合にはどの種類かを指定します。
    • 0はUDTでないことを意味します。
    • 1はSTRUCTURED型UDTであることを意味します。
    • 2はDISTINCT型UDTであることを意味します。
    • 3はTeradata独自の内部UDTであることを意味します。
    • 5はJSON属性であることを意味します。
  • udt_type_nameは、属性に関連付けられたUDT型名を指定します。

    これは属性がUDTである場合にのみ有意です。

  • max_lengthは属性の値のバイト単位の最大長を指定します。

    属性がLOB以外の型である場合、STRUCTURED型属性の値を取得するためにFNC_GetStructuredAttributeを呼び出す前に、割り当てる必要があるバッファのバイト単位のサイズとして、max_lengthを使用できます。

    属性がLOBの場合、max_lengthはLOB_REFの長さを示します。lob_lengthメンバーは、LOBデータ自体の長さを提供します。

    JSON属性の場合、max_lengthはJSON属性の可能な最大長を示します。

  • lob_lengthは、LOB属性の長さを指定します。

    これは属性がLOBである場合にのみ有意です。

    JSON属性では、データがLOBとして保存される場合、lob_lengthはJSON属性の可能な最大長を指定し、それ以外の場合、この値は0です。

    LOB属性の読み取りコンテキストを確立するときにFNC_LobOpenに渡すLOBオブジェクトの長さとして、lob_lengthを使用できます。

  • total_interval_digitsは、特定の属性の精度を指定します。total_interval_digitsの値は、以下の型のn値と対応します。
    • DECIMAL(n, m)
    • INTERVAL YEAR(n)
    • INTERVAL YEAR(n) TO MONTH
    • INTERVAL MONTH(n)
    • INTERVAL DAY(n)
    • INTERVAL DAY(n) TO HOUR
    • INTERVAL DAY(n) TO MINUTE
    • INTERVAL DAY(n) TO SECOND(m)
    • INTERVAL HOUR(n)
    • INTERVAL HOUR(n) TO MINUTE
    • INTERVAL HOUR(n) TO SECOND(m)
    • INTERVAL MINUTE(n)
    • INTERVAL MINUTE(n) TO SECOND(m)
    • INTERVAL SECOND(n, m)

    属性のデータ型が上記のリストにない場合、total_interval_digitsはその属性に対して有意ではありません。

  • num_fractional_digitsは、特定の属性の精度またはスケールを指定します。num_fractional_digitsの値は、以下の型のm値と対応します。
    • DECIMAL(n, m)
    • TIME(m)
    • TIME(m) WITH TIME ZONE
    • TIMESTAMP(m)
    • TIMESTAMP(m) WITH TIME ZONE
    • INTERVAL DAY(n) TO SECOND(m)
    • INTERVAL HOUR(n) TO SECOND(m)
    • INTERVAL MINUTE(n) TO SECOND(m)
    • INTERVAL SECOND(n, m)

    属性のデータ型が上記のリストにない場合、num_fractional_digitsはその属性に対して有意ではありません。

  • charset_codeは、属性に関連付けられたサーバー文字セットを指定します。

    これは属性が文字型である場合にのみ有意です。

    sqltypes_td.hヘッダー ファイルは、charset_etを以下のように定義しています。
    typedef int charset_et;
    有効な値は、sqltypes_td.hのcharset_en列挙定数で以下のように定義されています。
    typedef enum charset_en
    {
       UNDEF_CT=0,
       LATIN_CT=1,
       UNICODE_CT=2,
       KANJISJIS_CT=3,
       KANJI1_CT=4
    } charset_en; 

    JSON属性では、charset_codeはJSON属性がどのように定義されているかに応じて、LATIN_CTまたはUNICODE_CTになります。