17.00 - 17.05 - UDMのパラメータ リスト - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

UDMのC/C++関数の最初のパラメータは、常にそのUDMを呼び出す対象となるUDTのハンドルです。UDMは、UDTのハンドルを使用することによって、呼び出し対象であるUDTの値を取得します。

UDTハンドル パラメータの後に続くパラメータは、CREATE TYPE文のMETHOD指定内のパラメータに対応します。

メソッドにおいて引数にNULLを渡せるようにするには、パラメータ スタイルSQLを使用します。それ以外の場合は、パラメータ スタイルTD_GENERALを使用します。

パラメータ スタイルSQLを使用する場合は、各パラメータのインジケータ パラメータを定義する必要があります。

パラメータ スタイルTD_GENERALの構文

void  method_name  ( UDT_HANDLE  *udthandle,
                   type_1      *input_parameter_1,
                    ...,
                   type_n      *input_parameter_n,
                   result_type  *result,
                   char         sqlstate[6] )
{
     ...
}

パラメータ スタイルSQLの構文

void  method_name ( UDT_HANDLE  *udthandle,
                   type_1      *input_parameter_1,
                    ...,
                   type_n      *input_parameter_n,
                   int         *indicator_parameter_1,
                    ...,
                   int         *indicator_parameter_n,
                   char         sqlstate[6],
                   SQL_TEXT     method_name[m],
                   SQL_TEXT     specific_method_name[l],
                   SQL_TEXT     error_message[p] )
{
     ...
}

説明

パラメータ 指定内容 入力/ 出力
UDT_HANDLE * udthandle UDMの呼び出し対象であるUDTのハンドル。サブジェクト パラメータとも呼びます。 入力
type_n * input_parameter_n 入力パラメータ。nは、CREATE TYPE文のMETHOD指定中のパラメータの数です。n = 0なら、入力パラメータはありません。このデータ型は、sqltypes_td.h内のCデータ型のうち、入力引数のSQLデータ型に対応するものです。

入力パラメータの数は最大128個です。

入力
result_type * result 結果。

resultは、メソッドの戻す結果を入れる十分な大きさのデータ領域へのポインタです。そのデータ領域は、対応するMETHOD指定のRETURNS句で定義されるものです。

出力
int * indicator_parameter_n 入力パラメータに同じ順序で対応するインジケータ パラメータ(n > 0のメソッドの場合)。
インジケータ引数の値
  • -1であれば、対応する入力引数はNULLです。
  • 0であれば、対応する入力引数は値です。
入力
int * indicator_result 結果に対応する結果インジケータ パラメータ。 出力
char sqlstate[6] 成功、例外、または警告を示す戻り値。これは、6文字のC文字列へのポインタです(最初の5文字はASCII、最後の文字はCのNULL文字)。関数でエラーを検出した場合、関数でsqlstateをSQLSTATEの例外または警告に設定できます。

この文字列の初期値は'00000' (成功)です。

SQLSTATE値の詳細は、SQLSTATEの値を戻すを参照してください。

出力
SQL_TEXT method_name[m] メソッド名。これはC文字列へのポインタです。これは、CREATE TYPE文内のMETHOD method_nameで指定されるメソッド名と同じ名前です。

UDTの中では、この名前を使用してエラー メッセージを作成できます。

ANSI SQL標準では、mの最大値は128と定義されています。Teradata Databaseでは、メソッド名は最大30文字です。

入力
SQL_TEXT specific_method_name[l] 同じ名前のメソッドが複数個ある場合、呼び出す外部メソッドの特定名。これはC文字列へのポインタです。これは、CREATE TYPE文内のMETHOD指定のSPECIFIC 句に指定する特定名と同じ名前です。

CREATE TYPE文にSPECIFIC句が含まれていない場合、この名前は、METHOD method_nameで指定されるメソッド名と同じです。

UDTの中では、この名前を使用してエラー メッセージを作成できます。

ANSI SQL標準では、lの最大値は128と定義されています。Teradata Databaseでは、メソッド名は最大30文字です。

入力
SQL_TEXT error_message[p] エラー メッセージのテキスト。これは、C文字列へのポインタであり、pの最大値は256です。 出力

例: パラメータ スタイルTD_GENERALのUDM

以下に示すのは、パラメータ スタイルTD_GENERALを使用するUDMのC関数を示すコードの一部です。

/*****  C source file name: to_inches.c  *****/
   
#define SQL_TEXT Latin_Text
#include <sqltypes_td.h>
#include <string.h>
   
void meters_toInches( UDT_HANDLE  *meterUDT
                      FLOAT       *result,
                      char         sqlstate[6])
{
     ...
}

C関数の完全な例については、UDMのサンプル コードを参照してください。

メソッドに関連付けられたUDTを作成するCREATE TYPE文は、次のようになります。

CREATE TYPE meter AS FLOAT
FINAL
   INSTANCE METHOD toInches()
   RETURNS FLOAT
   SPECIFIC toInches
   NO SQL
   PARAMETER STYLE TD_GENERAL
   DETERMINISTIC
   LANGUAGE C;

サ―バーにUDMをインストールするための対応するCREATE METHOD文は、以下のようになります。

CREATE METHOD toInches()
RETURNS FLOAT
FOR meter
EXTERNAL NAME 'CS!toinches!udm_src/to_inches.c!F!meters_toInches';

例: パラメータ スタイルSQLのUDM

以下に示すのは、パラメータ スタイルSQLを使用するUDMのC関数の宣言方法を示すサンプルです。

/*****  C source file name: to_inches.c  *****/
  
#define  SQL_TEXT Latin_Text
#include <sqltypes_td.h>
#include <string.h>
   
void meters_toInches( UDT_HANDLE  *meterUDT
                      FLOAT       *result,
                      int         *meterUDTIsNull,
                      int         *resultIsNull,
                      char         sqlstate[6])
                      SQL_TEXT     extname[129],
                      SQL_TEXT     specific_name[129],
                      SQL_TEXT     error_message[257] )
{
     ...
}

C関数の完全な例については、UDMのサンプル コードを参照してください。

メソッドに関連付けられたUDTを作成するCREATE TYPE文は、次のようになります。

CREATE TYPE meter AS FLOAT
FINAL
   INSTANCE METHOD toInches()
   RETURNS FLOAT
   SPECIFIC toInches
   NO SQL
   PARAMETER STYLE SQL
   DETERMINISTIC
   LANGUAGE C;

サ―バーにUDMをインストールするための対応するCREATE METHOD文は、以下のようになります。

CREATE METHOD toInches()
RETURNS FLOAT
FOR meter
EXTERNAL NAME 'CS!toinches!udm_src/to_inches.c!F!meters_toInches';

引数の動作

詳細情報 参照先
引数がNULLの場合の動作 リテラル引数としてNULLを使用する場合の動作
文字列引数の切り捨て 文字列引数の切り捨て
オーバーフローと数値引数 オーバーフローと数値引数