17.00 - 17.05 - 文字データおよびバイト データを圧縮するUDFの記述ルール - 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
日本語 (日本)
  • スカラーUDFは、列のデータ型と互換性のあるデータ型を持っている単一のBYTE(n)、VARBYTE(n)、CHAR(n)、またはVARCHAR(n)入力パラメータを宣言する必要があります。結果パラメータ型は、VARBYTE(n)にする必要があります。互換性のあるデータ型の詳細については、互換データ型を参照してください。

    列の長さは入力パラメータの長さより短いか等しくする必要があります。

    CHARおよびVARCHARの列の場合、パラメータ宣言でCHARACTER SET句を使用してサーバー文字セットを指定する必要があります。このサーバー文字セットは、列のサーバー文字セットと一致させます。

    推奨事項:入力パラメータは、VARBYTE(n)またはVARCHAR(n)のデータ型で宣言してください。このように宣言すると、多くの場合に最適になります。

  • 入力が圧縮できないときには、VARBYTE引数のlengthフィールドに0未満の値を設定して、UDFは列データを圧縮できないことを示します。
  • 列のデータ型がVARCHARまたはCHARであり、UDFの入力パラメータをCHARまたはVARCHARとして宣言する場合、そのUDFではFNC_GetCharLengthを呼び出して入力文字列の実際の長さを取得する必要があります。

    UDF入力パラメータがCHARの場合、Teradata Databaseは適切な数の埋め込み文字を追加するか、適切な数の埋め込み文字を取り除くことで、入力文字列の文字数を列定義と同じ文字数に揃えます。

    UDF入力パラメータがVARCHARであり、圧縮する列がCHAR列の場合は、Teradata Databaseは埋め込み文字をすべて取り除きます。

  • VARCHAR列またはVARBYTE列の場合、Teradata Databaseは列定義で指定された長さで入力パラメータが定義されているものとしてUDFを呼び出します。

    次のテーブル定義があるとします。

    CREATE TABLE Descriptions
       (d_ID INTEGER
       ,d_Data VARCHAR(2400) COMPRESS USING Compress_Data
                             DECOMPRESS USING Decompress_Data
       );

    VARCHAR(64000)の入力パラメータを宣言するC関数を作成した場合、Teradata Databaseは、関数がVARCHAR(2400)の入力パラメータで宣言されたものとして、その関数を呼び出します。