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