NULL CALL句 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage
このオプションの句では、関数がnull結果を処理する方法を指定します。この句には、次の2つのオプションがあります。
  • CALLED ON NULL INPUT
  • RETURNS NULL ON NULL INPUT

この句の動作は、パラメータ形式に対する指定と相関しています。

指定するパラメータ形式 null
SQL 入力にも結果にも指定可能です。

そのためには、各パラメータと結果パラメータに標識値を指定します。

TD_GENERAL 例外条件が発生します。
JAVA 以下に示すように、関数がオブジェクト マップまたは単純なマップを使用するかどうかによって動作が異なります(詳細についてはSQLとJavaの間のデータ型マッピングを参照)。
  • オブジェクト マッピング タイプが使用される場合、入力と結果の両方に対してnullを指定できます。
  • 単純マッピング タイプが使用される場合、nullは例外条件を発生させます。

Javaメソッドの戻りタイプがオブジェクト マッピングされたデータ型として定義されている場合にのみ、スカラーまたは集約Java UDFから明示的にnullを返すことができます。

Javaメソッドの戻りタイプが単純マッピングとして定義されている場合、単純マッピングされたデータ型ではnullを表現できないため、実行時にnullを返すことはできません。

以下に示す条件の下でのみ、実行時にnullをパラメータとしてスカラーまたは集約Java UDFに渡すことができます。
  • パラメータがオブジェクト マッピングされている場合、RETURNS NULL ON NULL INPUTまたはCALLED ON NULL INPUTのいずれかを指定できます。

    RETURNS NULL ON NULL INPUTを指定する場合、Teradata Databaseはパラメータのnullを検出し、UDFの結果としてnullを返します。

    関数はnullパラメータを評価しません。

    CALLED ON NULL INPUTを指定する場合、Teradata DatabaseはパラメータのnullをUDFに渡し適切に評価します。

  • パラメータが単純マッピングされている場合、RETURNS NULL ON NULL INPUTのみを指定できます。

    この場合、システムはパラメータのnullを検出し、それをUDFの結果として返します。関数はnullパラメータを評価しません。

    CREATE FUNCTIONおよびREPLACE FUNCTION定義にCALLED ON NULL INPUTを指定することはできますが、nullを含むUDFの呼び出しは常に失敗します。

CおよびC++プロシージャの場合、渡される引数のいずれかがnullなら、実行される処置はnull処理に関して指定したオプションに依存します。

指定内容 関数の動作
CALLED ON NULL INPUT 呼び出されて評価されます。
RETURNS NULL ON NULL INPUT

関数に渡されるパラメータのいずれかがnullの場合

呼び出されません。常にnullが返されます。

このオプションは、nullを処理しないTD_GENERALパラメータ形式で定義した関数で、例外条件を生成しないようにするために役立ちます。

集約関数は、nullを渡されても常に呼び出される必要があるため、RETURNS NULL ON NULL INPUTを指定できません