関数呼び出し引数は、すべての単純なSQL式であり、定数値、列参照、ホスト変数、NEW VARIANT_TYPE UDTコンストラクタ式(<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>を参照)、またはこれらのいずれかを含む式(UDFを含む式など)、その他を含んでいます。
SQL関数を呼び出すとき、その関数がデフォルト データベースまたはデータベースSYSLIBのいずれにも保存されていない場合は、その関数呼び出しをデータベース名で完全修飾しなければなりません。デフォルト データベースおよびSYSLIBの両方に、呼び出された関数の名前と一致する関数が含まれている場合、デフォルト データベース内のUDFがシステムによって参照されます。SYSLIBを明示的に修飾する必要がある状況は、これだけです。
呼び出しに渡される引数のデータ型は、既存の関数の関数宣言に含まれるパラメータ宣言と互換性がなければなりません。同じ名前の関数が複数存在する場合、修飾するデータベースが指定されていなければ、呼び出される関数は以下のプロセスで判別されます。
- Teradata Databaseによって組み込み関数の一覧が検索されます。
呼び出された関数の名前がTeradata Databaseの組み込み関数と同じであれば、検索は中止されてその関数が使用されます。
候補の関数が見つからない場合は、ステップ2に進みます。
- Teradata Databaseによってデフォルト ユーザー データベースにあるSQLおよび外部の関数名のリストが検索されます。
関数呼び出しで指定されたものと同じ名前およびパラメータ数の関数、およびそのパラメータ タイプに基づく最適な指定を持つ関数が候補となります。
候補の関数が見つからない場合は、ステップ3に進みます。
- Teradata Databaseは、SYSLIBデータベースにある関数名のリストを検索します。
関数呼び出しで指定されたものと同じ名前およびパラメータ数の関数、およびそのパラメータ タイプに基づく最適な指定を持つ関数が候補となります。
候補の関数が見つからない場合、Teradata Databaseはリクエスト元にエラーを返します。
- 引数として渡されるSQL式として、ブール値式は使用できません。つまり、条件式です。
これは外部UDFに対しても同じです。
- 非確定SQL式、つまり、ランダム関数か非確定UDFのいずれかまたは両方を使用する、引数として渡される式は、SQL UDFのRETURN句で複数回使用されるパラメータに対応することはできません。
- 引数として渡されるSQL式は、スカラーsubquery にすることはできません。
所属先データベースの判別後、そのデータベースに含まれるユーザー定義関数の中から最適な候補を選択する際のルールについては、関数名のオーバーロードで説明しています。