目的
入力または結果パラメータのデータ型であり、UDF、UDM、および外部ストアド プロシージャで使用されます。また、あらゆるシステム定義型データ型またはユーザー定義型(UDT)データ型を受け入れることができます。パラメータの属性と戻りタイプは、実行時に決定されます。
構文
- parameter_name
- UDF、UDM、または外部ストアド プロシージャで宣言された入力または結果パラメータの名前。
ANSI準拠
TD_ANYTYPEは、ANSI SQL規格に対するTeradataの拡張機能です。
使用上の注意
- 異なる精度のパラメータと、異なる文字セットによる文字パラメータをサポートするルーチン(関数、メソッド、外部ストアド プロシージャ)を宣言する。
- 関数シグネチャで引数とパラメータが一致しないときに、切り捨てに起因する10進数パラメータの精度低下を回避する。
- 定数のパラメータ カウントがあるがパラメータのデータ型は異なるルーチンをサポートするために必要な、オーバーロードされたルーチンの数を減らす。
- 返されるデータ型が実行時に決定されるルーチンを宣言する。
ルール
- C、C++、またはJavaで記述されたスカラー関数、集約関数およびテーブル関数の入力パラメータ。
- C、C++、またはJavaで記述されたスカラー関数および集約関数の結果パラメータ。
- C、C++、またはJavaで記述された外部ストアド プロシージャのIN、INOUT、またはOUTパラメータ。
- CまたはC++で記述されたUDMの入力および出力パラメータ。
制限
- ストアド プロシージャ
- SQL UDF
- Javaで記述されたUDM
- テーブル演算子の戻り型として
- 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であると宣言します。
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パラメータのデータ型は、対応する入力引数のデータ型によって決まります。
例: TD_ANYTYPEデータ型
次の関数定義について考えてみましょう。
CREATE FUNCTION ascii (string_expr TD_ANYTYPE) RETURNS TD_ANYTYPE LANGUAGE C NO SQL SPECIFIC ascii EXTERNAL NAME 'CS!ascii!UDFs/ascii.c' PARAMETER STYLE SQL;
- CHARACTER
- VARCHAR
- CLOB
- CHARACTER、VARCHARまたはCLOB属性を持つUDT
- CHARACTERまたはVARCHARの要素型を持つARRAY
この関数は、入力文字列に関連付けられた文字セットを受け入れます。文字セットを明示的に指定していない場合は、デフォルトの文字セットが使用されます。
この関数でサポートされる戻りタイプは、BYTEINT、SMALLINT、またはINTEGERです。この関数に必要な戻りタイプを指定するには、関数を呼び出す時に、RETURNSdata typeかRETURNS STYLEcolumn expressionの句を使用します。
この関数を呼び出すクエリーの例を以下に示します。
SELECT (ascii('hello') RETURNS INTEGER);
このクエリーが返す出力は、次のとおりです。
ascii('hello') -------------- 104
この関数の詳細と、対応するCコードの例は、<Teradata Vantage™ SQL外部ルーチン プログラミング、B035-1147>を参照してください。
関連トピック
詳細情報 | 参照先 |
---|---|
UDFのTD_ANYTYPE入力パラメータと結果パラメータの宣言 | <Teradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE FUNCTION」、外部形式とテーブル形式 |
メソッドのTD_ANYTYPE入力パラメータと結果パラメータの宣言 | <Teradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE METHOD」 |
外部ストアド プロシージャのTD_ANYTYPE IN、INOUT、またはOUTパラメータの宣言 | <Teradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE PROCEDURE (外部形式)」 |
TD_ANYTYPE入力および結果パラメータを使用するルーチンの記述 | Teradata Vantage™ SQL外部ルーチン プログラミング、B035-1147. |