関数名 - 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

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

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

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

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

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

FUNCTION CLASS句を参照してください。

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

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

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

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

関数名は、固有である必要はありません。 複数の関数が同じ関数名を持つことができます。 これは、関数名のオーバーロードと呼ばれます。 関数名がオーバーロードする場合は、オーバーロードされたさまざまな関数名でのパラメータ タイプ指定は、識別できるように完全に異なっているか、TD_ANYTYPEパラメータ データ型を使用する必要があります。 行レベル セキュリティを強制するために、記述した関数の名前をオーバーロードすることはできません。

関数が固有であることを判別するためにシステムが使用するパラメータごとのルールのリストについては、関数のオーバーロードを参照してください。関数名の使用方法の詳細については、EXTERNAL BODY REFERENCE句のテーブルを参照してください。