RETURNSデータ型 - Teradata Database - Teradata Vantage NewSQL Engine - RETURNSデータ型のオプション、CREATE FUNCTION (外部形式)構文とREPLACE FUNCTION (外部形式) SQL文。

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

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

この句はすべての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を指定することはできません。指定した場合、Teradata Databaseは要求元にエラーを返します。

関数は、適切なデータ型のデータを返す必要があります。関数がその戻り型を作成することが困難であれば、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パーセルを使用してリクエスト固有のコンテキスト情報をリクエストの一部として送信します。これにより、Teradata Databaseは、リクエストで参照されている関数の結果を事前定義値で置換できます。Teradata Databaseは、このコンテキスト情報をUDFのRETURN式で公開します。

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