例: 動的な結果行指定を持つテーブル関数 - 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

以下に、動的な結果行指定を持つテーブル関数の宣言方法の例を示します。

/*****  C source file name: store_data.c  *****/
   
#define  SQL_TEXT Latin_Text
#include <sqltypes_td.h>
#include <string.h>

void get_store_data( INTEGER  *filetoread,    /* input argument  */
                     void     *out1,          /* output argument */
                     void     *out2,          /* output argument */
                     void     *out3,          /* output argument */
                     void     *out4,          /* output argument */
                     int      *filetoreadIsNull,
                     int      *out1IsNull,
                     int      *out2IsNull,
                     int      *out3IsNull;
                     int      *out4IsNull;
                     char     sqlstate[6],
                     SQL_TEXT extname[129],
                     SQL_TEXT specific_name[129],
                     SQL_TEXT error_message[257] )
{
     ...
}

サ―バーにテーブル関数をインストールする、対応するCREATE FUNCTION文は、以下のようになります。

CREATE FUNCTION getStoreData
  (FileToRead INTEGER)
RETURNS TABLE VARYING COLUMNS (4)
LANGUAGE C
NO SQL
EXTERNAL NAME 'CS!getstoredata!udfsrc/store_data.c!F!get_store_data'
PARAMETER STYLE SQL;

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

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