関数名は、SQLリクエストからSQL関数を呼び出すために使用する識別子です。これはDBC.TVMに保存されているデータベース オブジェクト名である必要はありません。
特定名 | DBC.TVMに保存される名前 |
---|---|
関数に割り当てられていない | 関数名。 この場合、関数名はデータベース内で固有でなければなりません。 |
関数に割り当てられている | 特定関数名。 この場合、関数名はデータベース内で固有である必要はありません。 |
SQL関数に列と同じ名前を指定することもできますが、不明瞭な指定にならないように十分に注意する必要があります。例えば、text_findはSQL関数の名前で、salesテーブルの列名でもあるとします。以下の例のように、列名の後にTeradata Databaseスタイルのデータ型が指定されている場合、システムはtext_findがtext_findという名前の関数への参照であり、同じ名前の列text_findへの参照ではないと推定します。
text_find(FLOAT),
リクエストを明確にするには、次の2つの方法があります。
- CASTのANSI構文を使用して、関数パラメータではなくデータ型を明示的に宣言します。たとえば、次のようになります。
CAST (text_find as FLOAT)
- 列名を完全に修飾します。たとえば、次のようになります。
sales.text_find (FLOAT),
この例のsalesはtext_findという名前の列を含むテーブルです。
SQL関数をデフォルト以外のデータベースまたはユーザーで作成した場合、関数の前に関数を含むデータベース名またはユーザー名を付けることができます。名前の有効範囲は、その名前が含まれているデータベースまたはユーザーです。
関数名は、固有である必要はありません。 複数の関数が同じ関数名を持つことができます。 これは、関数名のオーバーロードと呼ばれます(関数名のオーバーロードを参照)。 関数名がオーバーロードする場合は、オーバーロードされたさまざまな関数名でのパラメータ タイプ指定は、識別できるように完全に異なっている必要があります。 関数が固有であることを判別するためにシステムが使用するパラメータごとのルールのリストについては、関数名のオーバーロードを参照してください。