テーブル関数は、SELECT文のFROM句内だけに指定できるUDFの1形式です。これは、派生テーブルのサブクエリーとして処理されます。
テーブル関数は、一度呼び出すごとに1つのテーブルの行を返します。この関数は、CまたはC++で記述し、SELECT文のFROM句内でのみ呼び出せます。他の箇所から呼び出すことはできません。
テーブル関数は、すべてのAMP上で並列的に実行されます。ただし、テーブル関数の開発者は、関数でどのAMPを使用し、どのAMPを使用しないかを決定できます。
テーブル関数は、CREATE FUNCTION文を使用して作成します。新しい関数タイプに対して、ディクショナリ登録項が作成されます。そのプロセスの機能方法に違いはありません。次にUDFコードがコンパイルされてリンクされ、要求に応じてライブラリが全ノードに分散されます。
この関数は一度に1つのテーブル、1つの行を作成するため、列の定義とデータ型が必要になります。
UDFと同様に、テーブル関数でI/Oを実行する場合は、クライアント ユーザーをテーブル関数の実行に関連付けるための、新しい外部セキュリティ句を関数に含める必要があります。
関数に関連付けるのは、INVOKERか、DEFINERのどちらかにします。これは、関数の開発者が制御します。
テーブル関数は、関数の呼び出し側に一度に1つのテーブル、1つの行をループで返します。この関数は、渡された入力引数に基づいて、外部ファイルを読み取るか、または単純にテーブルの行を作成することができます。そのためには、ユーザーがSQL SELECT文のFROM句の位置にこの関数を指定します。
テーブル関数は、基本的には外部ソース(ネイティブOSファイルまたはメッセージ キュー)から派生テーブルを作成します。単に入力引数から行を作成することもできます。例えば、入力引数が、XMLテキストを含むCLOBへの参照となっている場合があります。テーブル関数は、そのCLOBからXMLテキストを構文解析し、SQL行全体を出力することができます。