function_name - Teradata Database - Teradata Vantage NewSQL Engine - function_name、CREATE FUNCTION(外部形式)およびREPLACE FUNCTION(外部形式)SQL文。

Teradata Vantage™ SQLデータ定義言語 構文規則および例

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

関数の呼び出し名。

この句はすべてのUDFで必須です。

関数名の長さは最大30文字です。

function_nameを使用して関数を識別する場合は、その関数が作成されたプログラミング言語の識別子命名規則に従うように気をつけてください。

名前を二重引用符(U+0022)で囲まない限り、既存のTeradata Database提供の関数(固有関数とも呼ばれる)と同じ名前をUDFに指定することはできません。 例えば、“TRIM”()などです。 UDFに固有関数の名前を指定することは、望ましくないプログラミング手法なので避けてください。

UDTと、パラメータなしでSYSUDTLIBに格納されているUDFは、同じ名前を持つことができません。

名前にマルチバイト文字を含むオブジェクトがデータベースのUDFライブラリにある場合、新規オブジェクト名に1バイト文字のみが含まれる場合でも、シングルバイトのセッション文字セットを使用して、新たなUDF、UDT、メソッド、またはJavaストアド プロシージャのオブジェクトを作成することはできません。その他の場合は、要求元にエラーが返されます。代わりにマルチバイトのセッション文字セットを使用します。

specific_function_nameまたはexternal_function_nameを指定しない場合、function_nameはC、C++、またはJava関数名のスペルと文字の大小に正確に一致している必要があります。このルールは関数の定義のみに該当し、呼び出しには該当しません。

行レベル セキュリティ ポリシーUDF、およびTD_VALISTデータ型を指定する入力パラメータを含むXMLドメイン固有の関数を除き、SQLでは同じ関数クラス内の関数名のオーバーロードがサポートされているため、function_nameはそのクラス内で固有である必要はありません。ただし、同じデータベースまたはユーザー内のスカラー関数と集約関数の両方に同じ名前を付けることはできません。

行レベル セキュリティ適用UDFでは、関数名オーバーロードはサポートされていません。UDFの入力としてTeradata Databaseではパラメータ型を必要とするので、特定のステートメント アクションのセキュリティ ポリシーを実行する各UDFのパラメータの数とデータ型が同じでなければなりません。セキュリティ ポリシーを実行する各UDFのパラメータで許容される唯一の違いは、制約でNULLが認められているかどうかに応じて、それぞれのUDFのパラメータにNULL標識を組み込むか省略するかという違いです。

同じクラス内で同じfunction_nameを持つ別々の関数の識別には、パラメータのデータ型とパラメータの数が使用されます。

関数のオーバーロードの詳細については、<Teradata Vantage™ SQL外部ルーチン プログラミング、B035-1147>を参照してください。

database_name
user_name
デフォルト以外のデータベースまたはユーザーで関数を作成または置換する場合に指定する、オプションのデータベース名またはユーザー名。
推奨されているSYSLIBデータベースをUDFの格納先として使用する場合は、その永久領域のサイズを変更し、それに対して適切な権限を付与する必要があります。これは、そのデータベースが永久領域0、アクセス権限なしで作成されているためです。
すべての行レベル セキュリティ ポリシー関数は、SYSLIBデータベースに常駐している必要があります。
UDTのキャスト、順序付け、またはデータ変換ルーチンとして使用される外部UDFを、SYSUDTLIBデータベースに作成する必要があります。
データベース名を指定しない場合、システムは現行データベース内で関数を作成または置換します。