関数呼び出し引数 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

関数呼び出し引数は、すべての単純なSQL式であり、定数値、列参照、ホスト変数、NEW VARIANT_TYPE UDTコンストラクタ式(<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>を参照)、またはこれらのいずれかを含む式(UDFを含む式など)、その他を含んでいます。

SQL関数を呼び出すとき、その関数がデフォルト データベースまたはデータベースSYSLIBのいずれにも保存されていない場合は、その関数呼び出しをデータベース名で完全修飾しなければなりません。デフォルト データベースおよびSYSLIBの両方に、呼び出された関数の名前と一致する関数が含まれている場合、デフォルト データベース内のUDFがシステムによって参照されます。SYSLIBを明示的に修飾する必要がある状況は、これだけです。

呼び出しに渡される引数のデータ型は、既存の関数の関数宣言に含まれるパラメータ宣言と互換性がなければなりません。同じ名前の関数が複数存在する場合、修飾するデータベースが指定されていなければ、呼び出される関数は以下のプロセスで判別されます。

  1. Teradata Databaseによって組み込み関数の一覧が検索されます。

    呼び出された関数の名前がTeradata Databaseの組み込み関数と同じであれば、検索は中止されてその関数が使用されます。

    候補の関数が見つからない場合は、ステップ2に進みます。

  2. Teradata Databaseによってデフォルト ユーザー データベースにあるSQLおよび外部の関数名のリストが検索されます。

    関数呼び出しで指定されたものと同じ名前およびパラメータ数の関数、およびそのパラメータ タイプに基づく最適な指定を持つ関数が候補となります。

    候補の関数が見つからない場合は、ステップ3に進みます。

  3. Teradata Databaseは、SYSLIBデータベースにある関数名のリストを検索します。

    関数呼び出しで指定されたものと同じ名前およびパラメータ数の関数、およびそのパラメータ タイプに基づく最適な指定を持つ関数が候補となります。

    候補の関数が見つからない場合、Teradata Databaseはリクエスト元にエラーを返します。

SQL式を使用してSQL UDFを呼び出すためのルールは次のとおりです。
  • 引数として渡されるSQL式として、ブール値式は使用できません。つまり、条件式です。

    これは外部UDFに対しても同じです。

  • 非確定SQL式、つまり、ランダム関数か非確定UDFのいずれかまたは両方を使用する、引数として渡される式は、SQL UDFのRETURN句で複数回使用されるパラメータに対応することはできません。
  • 引数として渡されるSQL式は、スカラーsubquery にすることはできません。

所属先データベースの判別後、そのデータベースに含まれるユーザー定義関数の中から最適な候補を選択する際のルールについては、関数名のオーバーロードで説明しています。