17.00 - 17.05 - 外部文字列リテラル - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

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

外部文字列リテラルでは、外部プロシージャの作成に必要な構成要素のエンコードされたリストを指定します。この文字列は、デコードされた時点で、各構成要素が何であり、どこに存在するかを示します。

それぞれの外部プロシージャの必要に応じて、以下の構成要素を指定することもできます。

Teradata Databaseはコード パスに基づいて、指定先のファイルにアクセスしてから、そのファイルに適切な拡張子を付けてTeradataプラットフォーム上の外部プロシージャ コンパイル ディレクトリに転送します。

以下の記号は区切り記号としてではなくパス文字列の構成要素として解釈されることがあるので、これらのいずれかを区切り記号として使用しないことは優れたプログラミング習慣です。
  • /  (SOLIDUS)
  • \  (REVERSE SOLIDUS)
  • :  (COLON)

任意の区切り記号に関して適用される制限は、指定のパス文字列内で同じ区切り記号を一貫して使用しなければならないということだけです。

Teradata Databaseは、ソース コードまたはオブジェクト コードを要求するときに、指定のクライアントまたはサーバーでソース構成要素を検索します。

ソース ファイルのインクルード宣言に指定したものと同じ名前のインクルード ファイル(CまたはC++ヘッダー ファイル)があれば、その名前を指定してください(<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照)。

例えば、z/OSクライアントでは以下のようになります。

'CI¡udfdefs¡UDFDEFS¡CS¡myudf¡UDFSRC¡F¡theudf'

UDFDEFSUDFSRCは、z/OSクライアント システム上のファイルのDDNAMEです。コード パスでIBMクライアント ファイルを参照するときには、そのファイルをクライアントDDNAMEで識別する必要があります。

この句により、システムは以下の処理を行ないます。
  • ファイルUDFDEFSを検索して、udfdefs.hに名前を変えてサーバーのUDFコンパイル ディレクトリに保存します。
  • UDFSRCを検索して、myudf.cに名前を変えてサーバーのUDFコンパイル ディレクトリに保存します。

Cソースmyudf.cには、以下のコードが含まれている必要があります。

#include <udfdefs.h>

または

#include "udfdefs.h"

以下のような骨組みのCREATE PROCEDURE (外部形式)文を指定すると仮定します。省略記号(...)の部分には詳細なコードが入ります。

CREATE PROCEDURE abc(…)
 …
EXTERNAL NAME 'CS!matrix!matrix.c';

この例では、Cソース ファイルの名前はmatrix.cであり、プロシージャ名abcに基づくCプロシージャ名には以下のような骨組みのコードが必要です。

void abc(…)
 {
  …
 }

以下のような骨組みのCREATE PROCEDURE (外部形式)文を指定すると仮定します。ここでも、省略記号(...)の部分には詳細なコードが入ります。

CREATE PROCEDURE abc(…)
 …
EXTERNAL NAME 'CO!matrix!matrix.o';

このプロシージャにはソース ファイルがありません。コードはmatrix.oという名前のオブジェクト ファイルです。

このCREATE PROCEDURE(外部形式)文を正常にコンパイルするには、abcという名前の指定のオブジェクト ファイルにプロシージャが含まれていなければなりません。

プロシージャ名の使用方法の詳細については、外部文字列リテラルの例トピックの最後にあるテーブルを参照してください。

さまざまなオプションを必要な回数だけ指定できますが、パッケージ オプションだけはその他のオプションと併用できません。

外部名ストリングの最大長は1,999文字です。