UDMを作成してテストした後に、それをサーバーにインストールできます。
CREATE METHOD文
ソース コードのファイル名と位置を指定して、それをサーバーにインストールするには、CREATE METHOD文を使用します。
メソッドがコンパイルされ、メソッドの属するデータベースに関連するダイナミック リンク ライブラリ(DLLまたはSO)とリンクされ、システム内のTeradata Databaseのすべてのノードに配布されます。
特定のデータベース内で定義されているすべてのUDMは、単一のダイナミック リンク ライブラリにリンクされます。
デフォルト パスと一時パス
作成時と実行時にUDMを管理するためにTeradata Databaseで使用されるデフォルト パスと一時パスは、UDFおよび外部ストアド プロシージャ用に使用されるデフォルト パスおよび一時パスと同じです。例えば、UDF、UDM、および外部ストアド プロシージャのコンパイルでは、同じ一時ディレクトリが使用されます。
デフォルト パスと一時パスの詳細は、デフォルト パスと一時パスを参照してください。
ソース ファイルの位置の指定
CREATE METHOD文のEXTERNAL句には、ソース コード ファイルの名前とパスを指定します。
| CREATE METHODの句 | 説明 |
|---|---|
| EXTERNAL | メソッド ソースがクライアント上の現行ディレクトリまたはデフォルト ディレクトリにあり、それ以外のファイルをインクルードする必要がない場合に、EXTERNAL句を使用します。 ソース名は、CREATE METHODキーワードの直後の名前です。 クライアント
以下に、toInches.cという名前のソース コード ファイルの例を示します。 CREATE METHOD toInches() RETURNS FLOAT FOR meter EXTERNAL; |
| EXTERNAL NAME method_name | ソースがクライアント上の現行ディレクトリまたはデフォルト ディレクトリにあり、それ以外のファイルをインクルードする必要がない場合に、EXTERNAL method_name句を使用します。 ソース名はmethod_nameと同じです。 クライアント
以下に、meter_toInches.cという名前のソース コード ファイルの例を示します。 CREATE METHOD toInches() RETURNS FLOAT FOR meter EXTERNAL NAME meter_toInches; |
| EXTERNAL NAME 'string' | 'string'には次のものの名前と位置を指定します。
クライアント
サンプルは次のとおりです。 CREATE METHOD toInches() RETURNS FLOAT FOR meter EXTERNAL NAME 'CS!toInches!udmsrc/toInches.c!F!meter_toInches'; 説明
|
CREATE METHODとEXTERNAL句の詳細は、<Teradata Vantage™- SQLデータ定義言語 - 詳細トピック、B035-1184>を参照してください。
ODBCでのソース ファイルの位置
ODBCを使用する場合、サーバーに保存されたファイルからUDMのみを作成できます。
JDBCでのソース ファイルの位置
Teradata JDBCインターフェース ドライバを使用すると、Teradata Databaseサーバー上にあるファイルまたはクライアント上にあるリソースからUDMを作成することができます。
クライアント側のUDMソース ファイルは、クラス パスのリソースとして使用できなければなりません。Teradata JDBCドライバにより、クライアントのファイル システムに直接アクセスすることなく、クラス パスからリソースをロードしてサーバー ノードに転送することができます。
C/C++関数名の指定
CREATE METHOD文中のEXTERNAL句は、ソース コードの場所を指定する以外に、C/C++関数宣言内に出現するC/C++関数名、またはC/C++のソースではなくC/C++のオブジェクトが指定された場合には関数のエントリ名を指定します。
| CREATE METHODの句 | 結果 |
|---|---|
| EXTERNAL | C/C++関数名は、CREATE METHODキーワードの後の名前と一致していなければなりません。 次のようなCREATE METHOD文があるとします。 CREATE METHOD toInches() RETURNS FLOAT FOR meter EXTERNAL; CまたはC++関数名はtoInchesでなければなりません。 クライアントがメインフレーム接続の場合、C/C++関数名はソースのDDNAMEでなければなりません。 |
| EXTERNAL NAME method_name | C/C++関数名はmethod_nameと一致していなければなりません。 次のようなCREATE METHOD文があるとします。 CREATE METHOD toInches() RETURNS FLOAT FOR meter EXTERNAL NAME meter_toInches; C/C++関数名は、meter_toInchesでなければなりません。 クライアントがメインフレーム接続の場合、method_nameはソースのDDNAMEでなければなりません。 |
| EXTERNAL NAME 'string' | 'string'には、C/C++関数名を指定するFオプションを含めることができます。 次のようなCREATE METHOD文があるとします。 CREATE METHOD toInches() RETURNS FLOAT FOR meter EXTERNAL NAME 'CS!toInches!udmsrc/toInches.c!F!meter_toInches'; C/C++関数名は、meter_toInchesでなければなりません。 'string'にFオプションが含まれていない場合、C/C++関数名は、CREATE METHODキーワードの後の名前と一致していなければなりません。 |
非標準インクルード ファイルの指定
UDMに非標準のヘッダー ファイルをインクルードする場合は、CREATE METHOD文のEXTERNAL句に、そのヘッダー ファイルの名前とパスを指定する必要があります。
ヘッダー ファイルssn.hをインクルードしている次のようなUDMがあるとします。
/***** C source file name: p_ssn.c *****/
#define SQL_TEXT Latin_Text
#include <sqltypes_td.h>
#include "ssn.h"
void encrypt( UDT_HANDLE *personalUdt,
VARCHAR_LATIN *result,
char sqlstate[6])
{
...
}
以下に、非標準のヘッダー ファイルの名前とパスを指定したCREATE METHODの例を示します。
CREATE METHOD encrypt() RETURNS VARCHAR(64) FOR personal EXTERNAL NAME 'CI!ssn!udm_home/ssn.h!CS!encrypt!udm_home/p_ssn.c!F!encrypt';
説明
| EXTERNAL NAMEに続く文字列 | 指定内容 |
|---|---|
| ! | 区切り文字。 |
| C | ヘッダー ファイルをクライアントから入手する。 |
| I | 後続の2セットの区切り文字の間の情報が、インクルード ファイル(.h)の名前と位置を識別する。 |
| ssn | ヘッダー ファイルの名前(ファイル拡張子なし)。 |
| udm_home/ssn.h | クライアント上のヘッダー ファイルのパスと名前。 |
| C | ソースをクライアントから入手する。 |
| S | 後続の2セットの区切り文字の間の情報が、CまたはC++関数ソース ファイルの名前と位置を識別する。 |
| encrypt | サーバーがソースをコンパイルするために使用する名前(ファイル拡張子なし)。 |
| udm_home/p_ssn.c | ソース ファイルのパスと名前。 |
| F | 次の区切り文字の後の情報がCまたはC++関数名を識別する。 |
| encrypt | CまたはC++関数名。 |
ライブラリのインストールの詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE METHOD」を参照してください。
関連トピック
| 詳細情報 | 参照先 |
|---|---|
| CREATE METHOD文 | Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144 |
| UDTとUDMに適用される権限 | Teradata Vantage™ - データベースの管理、B035-1093 |
| データベース内の外部ルーチンの名前と数に影響するLinuxの制限 | Argument list too long |