- スカラー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)の入力パラメータで宣言されたものとして、その関数を呼び出します。