17.10 - 関数名 - Advanced SQL Engine - Teradata Database

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

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

関数名は、SQLリクエストからSQL関数を呼び出すために使用する識別子です。これはDBC.TVMに保存されているデータベース オブジェクト名である必要はありません。

特定名 DBC.TVMに保存される名前
関数に割り当てられていない 関数名。

この場合、関数名はデータベース内で固有でなければなりません。

関数に割り当てられている 特定関数名。

この場合、関数名はデータベース内で固有である必要はありません。

SQL関数に列と同じ名前を指定することもできますが、不明瞭な指定にならないように十分に注意する必要があります。例えば、text_findはSQL関数の名前で、salesテーブルの列名でもあるとします。以下の例のように、列名の後にデータベーススタイルのデータ型が指定されている場合、システムはtext_findtext_findという名前の関数の参照であり、ないが同じ名前の列text_findの参照であると想定します。

text_find(FLOAT),
リクエストを明確にするには、次の2つの方法があります。
  • CASTのANSI構文を使用して、関数パラメータではなくデータ型を明示的に宣言します。たとえば、次のようになります。
    CAST (text_find as FLOAT)
  • 列名を完全に修飾します。たとえば、次のようになります。
    sales.text_find (FLOAT),

    この例のsalestext_findという名前の列を含むテーブルです。

SQL関数をデフォルト以外のデータベースまたはユーザーで作成した場合、関数の前に関数を含むデータベース名またはユーザー名を付けることができます。名前の有効範囲は、その名前が含まれているデータベースまたはユーザーです。

関数名は、固有である必要はありません。 複数の関数が同じ関数名を持つことができます。 これは、関数名のオーバーロードと呼ばれます(関数名のオーバーロードを参照)。 関数名がオーバーロードする場合は、オーバーロードされたさまざまな関数名でのパラメータ タイプ指定は、識別できるように完全に異なっている必要があります。 関数が固有であることを判別するためにシステムが使用するパラメータごとのルールのリストについては、関数名のオーバーロードを参照してください。