17.10 - 使用上の注意 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ タイプおよびリテラル

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

TD_ANYTYPEが役立つ場合

TD_ANYTYPEデータ型は、以下の場合に有用です。
  • 異なる精度のパラメータと、異なる文字セットによる文字パラメータをサポートするルーチン(関数、メソッド、外部ストアド プロシージャ)を宣言する。
  • 関数シグネチャで引数とパラメータが一致しないときに、切り捨てに起因する10進数パラメータの精度低下を回避する。
  • 定数のパラメータ カウントがあるがパラメータのデータ型は異なるルーチンをサポートするために必要な、オーバーロードされたルーチンの数を減らす。
  • 返されるデータ型が実行時に決定されるルーチンを宣言する。

ルール

以下に対しては、TD_ANYTYPEのみをデータ型として指定できます。
  • C、C++、またはJavaで記述されたスカラー関数、集約関数およびテーブル関数の入力パラメータ。
  • C、C++、またはJavaで記述されたスカラー関数および集約関数の結果パラメータ。
  • C、C++、またはJavaで記述された外部ストアド プロシージャのIN、INOUT、またはOUTパラメータ。
  • CまたはC++で記述されたUDMの入力および出力パラメータ。

制限

TD_ANYTYPEは、以下に対するパラメータ タイプとしてサポートされていません。
  • ストアド プロシージャ
  • SQL UDF
  • Javaで記述されたUDM
以下の場合、TD_ANYTYPEを使用できません。
  • テーブル演算子の戻り型として
  • Javaルーチン内でUDTパラメータを表わす目的で

TD_ANYTYPE結果パラメータの戻りタイプの宣言

TD_ANYTYPE結果パラメータを使用して定義されるUDFまたはUDMを呼び出すときに、RETURNSdata typeまたはRETURNS STYLEcolumn expressionの句を使用して、必要な戻りタイプを指定できます。この列式は、有効なテーブルまたはビューの列参照にすることができます。また、戻り値のデータ型は、列の型に応じて決定されます。

例:

SELECT (routine_name  (parameter_list) RETURNS  data_type);
SELECT (routine_name  (parameter_list) RETURNS STYLE  TableName.ColumnName);

上記のクエリーでは、指定されたパラメータを使用してroutine_nameを呼び出し、戻りタイプがdata_typeまたは列のデータ型TableName.ColumnNameであると宣言します。

RETURNS句やRETURNS STYLE句を使用する場合は、UDFまたはUDM呼び出しを括弧で囲む必要があります。

TD_ANYTYPE OUTパラメータを使用して定義される外部ストアド プロシージャを呼び出すときに、CALL文でRETURNSdata typeまたはRETURNS STYLEcolumn expressionの句とOUTパラメータを指定して、必要なOUTパラメータの戻りタイプを示すことができます。

例:

CALL  procedure_name(parameter1,  out_parameter  RETURNS  data_type);
CALL  procedure_name(parameter1,  out_parameter  RETURNS STYLE  TableName.ColumnName);

RETURNS句またはRETURNS STYLE句は、TD_ANYTYPE入力パラメータがルーチンにも含まれている場合は必須ではありません。RETURNS句またはRETURNS STYLE句を指定していないときには、TD_ANYTYPE結果パラメータまたはOUTパラメータの戻りタイプを決定するために、最初のTD_ANYTYPE入力引数のデータ型が使用されます。文字データ型の場合、データ型の一部として文字セットが指定されていないときには、デフォルトの文字セットが使用されます。

RETURNS句とRETURNS STYLE句は、外部ストアド プロシージャで戻りタイプをTD_ANYTYPE OUTパラメータに設定するためにのみ使用します。TD_ANYTYPE INOUTパラメータのデータ型は、対応する入力引数のデータ型によって決まります。