例: 動的な結果行指定を持つテーブルUDF - Teradata Database - Teradata Vantage NewSQL Engine

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/uhh1512082756414.ditamap
dita:ditavalPath
ja-JP/uhh1512082756414.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

次のコードは、動的な結果行指定を持つテーブルUDFを実装するメソッドのメソッド シグネチャを示すコードの一部です。

public class UDFExample {

   ...

   public static void getStoreData( int          store, /* input arg  */
                              java.lang.Object[] c1,    /* output arg */
                              java.lang.Object[] c2,    /* output arg */
                              java.lang.Object[] c3,    /* output arg */
                              java.lang.Object[] c4)    /* output arg */
   {
        ...
   }

   ...

}

UDFExampleクラスのJARファイルがUDFExample.jarという名前の場合、以下の文は、UDFExample.jarUDFExampleクラスをデータベースに登録し、JARファイルに対してJarUDFと呼ばれるSQL識別子を作成します。

CALL SQLJ.INSTALL_JAR('CJ!udfsrc/UDFExample.jar','JarUDF',0);

UDFを定義するための対応するCREATE FUNCTION文は、以下のようになります。

CREATE FUNCTION getStoreData
  (FileToRead INTEGER)
RETURNS TABLE VARYING COLUMNS (4)
LANGUAGE Java
NO SQL
EXTERNAL NAME 'JarUDF:UDFExample.getStoreData'
PARAMETER STYLE Java;

以下に、FROM句からテーブル関数を呼び出すINSERT … SELECT文の例を示します。

INSERT INTO Sales_Table
SELECT *
FROM TABLE (getStoreData(9005)
   RETURNS (Store INTEGER, Item INTEGER, Quantity INTEGER)) AS tf;