17.05 - return_data_type - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-175K-JPN
Language
日本語 (日本)

外部関数によって返される値のデータ型。

この句はすべてのUDFで必須です。

システム定義のパラメータ型TD_ANYTYPEをRETURNS句のデータ型として指定できます。TD_ANYTYPEでは、任意のシステム定義のデータ型を使用できます。その属性は、関数の実行時に決定されます。TD_ANYTYPEデータ型の詳細については、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。TD_ANYTYPEデータ型を活用する関数コードの記述の詳細については、<Teradata Vantage™ - SQL外部ルーチン プログラミング、B035-1147>を参照してください。

UDT列の圧縮に使用するアルゴリズム関数のRETURNSデータ型は、VARBYTE(n)にする必要があります。

UDT列の圧縮解除に使用するアルゴリズム関数のRETURNSデータ型は、対応する圧縮関数のUDTパラメータ データ型およびUDT列のデータ型と完全に一致していなければなりません。

アルゴリズム圧縮解除関数のRETURNS VARBYTE(n)データ型の戻り値の長さnは、圧縮関数のVARBYTE(n)パラメータの長さに完全に一致する必要があります。

文字サーバー データ セットとしてKANJI1を指定することはできません。指定した場合、Vantageはリクエスト元にエラーを返します。

関数は、適切なデータ型のデータを返す必要があります。関数がその戻り型を作成することが困難であれば、CAST FROM句も指定してシステムが適切なデータ型変換を実行できるようにします。CAST式の使用方法の詳細については、<Teradata Vantage™ - SQL関数、式、および述部、B035-1145>を参照してください。

結果型には、名前RETURN0[n]の下のDBC.TVFieldsにディクショナリ項目があります。nは、各値を固有にしてユーザー定義パラメータ名が重複しないようにするために、RETURN0行に付加される一連の数字です。nの値は、パラメータ名が重複しなくなるまで増分されます。

行レベル セキュリティ ポリシーUDFのRETURNSデータ型には、次の値が可能です。
  • ポリシーでINSERTアクションまたはUPDATEアクションが実装されている場合、データ型は、制約の定義に指定されているデータ型と同じにする必要があります。 CREATE CONSTRAINTを参照してください。

    パラメータの値は、新しい行に挿入された値または既存の行で更新された値になります。

  • ポリシーでDELETEアクションまたはSELECTアクションが実装されている場合、戻りパラメータのデータ型はCHARACTER(1)である必要があります。

    このパラメータの値は、TまたはFになります。

RETURN0のパラメータ名がない場合は、nで示されている添え字を指定しないでください。

Teradata Unityは、CLIv2パーセルを使用してリクエスト固有のコンテキスト情報をリクエストの一部として送信します。これにより、Vantageは、リクエストで参照されている関数の結果を事前定義値で置換できます。Vantageは、このコンテキスト情報をUDFのRETURN式で公開します。

ただし、UDFでは、Vantageが知り得ない任意の非確定的な値を生成して使用することもできます。したがって、そのようなUDFを参照するSQLで一貫性のある結果が生成されるということを、Vantageは保証できません。

CAST FROM return_data_type

RETURNS句で指定した型に変換する、外部関数から返された結果型。

例:

  ...RETURNS DECIMAL(9,5) CAST FROM FLOAT...

データ型変換を必要とするLOBを外部UDFに渡すときには、変換を行なうためにまずLOBを実体化する必要があります。

data_typeの値はUDTにすることができます。

文字サーバー データ セット属性としてKANJI1を指定することはできません。指定した場合、Vantageはリクエスト元にエラーを返します。