UDFの使用には、以下の制限があります。
- データベースのUDFライブラリに、名前にマルチバイト文字が存在するオブジェクトが含まれている場合、新規オブジェクト名に1バイト文字のみが含まれる場合でも、1バイト セッション文字セットを使用して、新たなUDF、UDT、メソッド、あるいはJava外部プロシージャ オブジェクトを作成することはできません。必ずマルチバイト セッション文字セットを使用するようにしてください。
- 埋込みSQLアプリケーションからは、CREATE FUNCTIONリクエストまたはREPLACE FUNCTIONリクエストを実行できません。
- UDFは再帰的ビューを参照できません。
- 行レベル セキュリティ ポリシーには、スカラー関数のみを使用できます。
- DMLリクエストから行レベル セキュリティ ポリシー関数を呼び出すことはできません。
行レベル セキュリティ ポリシーUDFは、CREATE TABLEリクエストまたはALTER TABLEリクエストの列に対してのみ指定できます。
- 非Java UDFは、入力パラメータおよび戻りパラメータとして、DISTINCT型UDTおよびSTRUCTURED型UDTの両方を指定できます。
- 入力パラメータまたは関数結果のいずれかとしてUDTを指定する場合、関数の現行ユーザーには、SYSUDTLIBデータベースに対するUDTUSAGE権限か、または指定UDTに対するUDTUSAGE権限のいずれかが必要です。
- SYSUDTLIBデータベース内に、キャスト ルーチン、順序付けルーチン、またはデータ変換ルーチンとして使用されるUDFが含まれていなければなりません。
- Java UDFは、Java外部プロシージャ内から呼び出すことはできません。
- UDFのRETURN式で参照される非確定要素は、Teradata Unityによって事前定義された値に置き換えることができます。Teradata Unityの詳細については、Teradata Unityのドキュメントを参照してください。