16.20 - parameter nameデータ型 - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-162K-JPN
Language
日本語 (日本)

関数に渡される変数のオプションのパラメータ名とロケータ。UDT列の圧縮/圧縮解除に使用する関数では、入力パラメータを1つだけ使用できます。そのパラメータのデータ型は、サポートされているUDTデータ型であれば、どれでもかまいません。

データベース オブジェクトの命名ルールについては、<Teradata Vantage™ SQL基礎、B035-1141>を参照してください。

関数に渡すパラメータがない場合でも、右括弧と左括弧を指定する必要があります。

UDFが受け入れる最大パラメータ数は128です。

パラメータ名はUDF定義内で固有でなければなりません。 パラメータ名を1つ指定する場合は、関数に渡すすべてのパラメータの名前を指定する必要があります。 UDFパラメータの名前にキーワードSELFを使用することはできません。 パラメータ名を指定しない場合、Teradata DatabaseはP1、P2、…、Pnの形式でパラメータに固有名を割り当てます。 これらの名前はCOMMENT文で使用され、HELP FUNCTION文で生成されるレポートに表示され、エラー メッセージのテキストに表示されます。 COMMENT(コメント配置形式)HELP FUNCTIONを参照してください。

UDT列の圧縮に使用するアルゴリズム圧縮関数のパラメータのデータ型は、対応する圧縮解除関数のRETURNSデータ型と完全に一致している必要があります。アルゴリズム圧縮関数のデータ型も圧縮対象のUDT列のデータ型と一致している必要があります。

パラメータ型がUDTのUDFは、SYSLIBではなくSYSUDTLIBに存在している必要があります。

data type
UDTを含む括弧に入れたカンマ区切りのデータ型のリスト。データ型は、同じ名前でオーバーロードされた関数を区別するために必要になります。
各パラメータに関連付けられたデータ型は、パラメータまたは戻り値の型です。Teradata Databaseのすべてのデータ型が有効です。BYTE、CHARACTER、DECIMAL、VARCHARなど、長さやサイズを指定するデータ型では、パラメータのサイズが、渡すことのできる最大バイト数になります。文字データでは、CHARACTER SET句も指定できます。
文字サーバー データ セットKANJI1を指定することはできません。指定した場合、要求元にエラーが返されます。
BLOB型とCLOB型は、ロケータで表わす必要があります。ロケータの説明は、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。Teradata Databaseではメモリ内LOBパラメータはサポートされません。LOBパラメータと戻り値ごとに、AS LOCATOR句を指定する必要があります。
データ型変換を必要とするLOBをUDFに渡すときには、変換を行なうためにLOBを実体化する必要があります。
VARIANT_TYPE
システム定義のパラメータ型VARIANT_TYPEを関数の入力パラメータのデータ型として指定することもできます。VARIANT_TYPEでは、あらゆるシステム定義型を使用できます。その属性は、関数の実行時に決定されます。VARIANT_TYPEパラメータ データ型の詳細は、<Teradata Vantage™データ タイプおよびリテラル、B035-1143>を参照してください。
VARIANT_TYPE UDTは、Java関数には指定できません。
UDFでは、最大で128個のあらゆるデータ型の入力および結果パラメータをサポートしていますが、各VARIANT_TYPE入力パラメータは、さらに128個のパラメータをサポートします。最大で8個のUDF入力パラメータをVARIANT_TYPEデータ型として宣言できるので、最大数のVARIANT_TYPEパラメータを指定した場合にTeradata Databaseで実際に使用できるUDF入力パラメータの数は1,144個になります。
TD_ANYTYPE
システム定義のデータ型TD_ANYTYPEでは、あらゆるシステム定義のデータ型を使用できます。その属性は、関数の実行時に決定されます。VARIANT_TYPEパラメータ データ型の詳細は、<Teradata Vantage™データ タイプおよびリテラル、B035-1143>を参照してください。C、C++、またはJavaルーチンの記述にTD_ANYTYPEを使用する方法の詳細は、<Teradata Vantage™ SQL外部ルーチン プログラミング、B035-1147>を参照してください。
TD_ANYTYPEは、次のパラメータのデータ型として指定できます。
  • C、C++、またはJavaで記述されたスカラー関数、集約関数、またはテーブル関数の1つの入力パラメータ。
  • C、C++、またはJavaで記述されたスカラー関数または集約関数の1つの結果パラメータ。
テーブル関数の結果パラメータのデータ型として、TD_ANYTYPEを指定することはできません。

入力パラメータ値および行レベル セキュリティ

行レベル セキュリティ ポリシー制約で定義されるすべての入力パラメータ値には、名前が付いていなければなりません。セキュリティ制約ポリシーUDFは、その制約が定義されている表で対応するリクエスト タイプが実行されるたびに、Teradata Databaseによって自動的に呼び出されます。Teradata Databaseは、関数の入力パラメータ値を自動的に生成するので、ソースを知っていなければなりません。入力パラメータ名は、パラメータのソースとして定義されています。

各UDFで使用できる入力パラメータは、制約オブジェクトで定義されているUDFのステートメント アクションによって異なります。

アクション パラメータ 必須
SELECTまたはINSERT CURRENT_SESSION はい
列名またはUDT いいえ
UPDATE CURRENT_SESSION はい
INPUT_ROW はい
UDT名 いいえ
DELETE INPUT_ROW はい
列名またはUDT いいえ

次のパラメータ名をパラメータのソースとして指定することもできます。パラメータ名は、Teradata Databaseによってセキュリティ ポリシーUDFに提供される入力が、指定されたDELETE文、INSERT文、SELECT文、またはUPDATE文のアクションによって定義されるソースからの制約値であることを意味しています。

CURRENT_SESSION
このパラメータ名では、パラメータのソースを、UDFの適用先の制約のセッションで現在設定されている値として定義します。
INPUT_ROW
このパラメータ名では、パラメータのソースを、リクエストの対象行の対応する制約列の値として定義します。