17.10 - CREATE METHOD構文要素 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)
INSTANCE
オブジェクトはインスタンス メソッドです。
INSTANCEがデフォルトです。
CONSTRUCTOR
このオブジェクトは、コンストラクタ メソッドです。
method_name
メソッドの呼び出し名。
データベースのUDFライブラリに、名前にマルチバイト文字が存在するオブジェクトが含まれている場合、新規オブジェクト名に1バイト文字のみが含まれる場合でも、1バイト セッション文字セットを使用して、新たなUDF、UDT、メソッドを作成することはできません。代わりにマルチバイト セッション文字セットを使用します。1バイト セッション文字セットを使用すると、Vantageは要求元にエラーを返します。
メソッド オブジェクトの名前は、オブジェクトの命名ルールに準拠している必要があります。オブジェクト命名ルールについては、<Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。
method_nameは、SYSUDTLIBデータベース内で固有である必要があります。SYSUDTLIBデータベースに含まれる既存のメソッドまたはその他のデータベース オブジェクトと同じ名前をメソッドに付けることはできません。
specific_method_nameまたはexternal_method_nameを指定しない場合、method_nameはそのC/C++のメソッド名のスペルと大文字小文字の区別に正確に一致している必要があります。これは、メソッドの定義のみで、メソッドの使用には当てはまりません。
SQLは同じメソッド クラスの関数名オーバーロードをサポートしているのでmethod_name はクラス内で固有である必要はありません。
同じクラス内で同じmethod_nameを持つ別々のメソッドの識別には、パラメータのデータ型とパラメータの数が使用されます。
関数のオーバーロードの詳細については、<Teradata Vantage™ - SQL外部ルーチン プログラミング、B035-1147>を参照してください。
インスタンス メソッドおよびコンストラクタ メソッドについては、Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184のCREATE METHODを参照してください。
return_data_type
メソッドによって返される値の事前定義データ型またはUDT。
メソッドは、適切なデータ型のデータを返す必要があります。メソッドがその戻り値型を作成するのが困難であれば、CAST FROM句も指定してシステムが適切なデータ型変換を実行できるようにします。CAST式の使用方法の詳細については、<Teradata Vantage™ - SQL関数、式、および述部、B035-1145>を参照してください。
結果型には、名前RETURN0 [n]の下のDBC.TVFieldsにディクショナリ項目があります。nは、各値を固有にしてユーザー定義パラメータ名が重複しないようにするために、RETURN0行に付加される一連の数字です。nの値は、パラメータ名が重複しなくなるまで増分されます。
RETURN0のパラメータ名がない場合、nの添え字は使用されません。
メソッドの外部ルーチンがCまたはC++で記述されている場合、パラメータのデータ型としてTD_ANYTYPEを指定できます。
<Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184>のCREATE FUNCTIONまたはREPLACE FUNCTIONを参照してください。
この句は任意指定です。
RETURNS句を指定する場合、対応するCREATE TYPEで指定されるRETURNS句と同じでなければなりません。
UDMにRETURNS句を指定しない場合、対応するCREATE TYPEに対して指定されるRETURNS句がデフォルトでこのメソッドに適用されます。
cast_data_type
RETURNS句で指定した型に変換するメソッドから返された結果型。
CAST FROM句を指定する場合、「結果キャスト元」データ型から戻りデータ型への既存のキャストが必要になります。以下に例を示します。
  ...RETURNS DECIMAL(9,5) CAST FROM FLOAT...
data typeがUDTの場合、その変換を処理するように適切なキャストおよび変換を定義する必要があります。 CREATE CASTおよびREPLACE CASTCREATE TRANSFORMおよびREPLACE TRANSFORMを参照してください。
データ型変換を必要とするLOBをメソッドに渡すときには、変換を行なうためにまずLOBを実体化する必要があります。
data typeにロケータ標識が含まれる場合、メソッドにCAST FROM句を指定できません。
UDT_name
このメソッドが関連するUDTの名前。
参照されるUDTは、DISTINCT型UDTまたはSTRUCTURED型UDTのいずれかです。Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184のCREATE TYPE(DISTINCT形式)とCREATE TYPE(STRUCTURED形式)を参照してください。
GLOP_set_name
このメソッドに関連付けるGLOPセットの名前。
メソッドを作成している時点で、指定のGLOPセットが存在している必要はありません。
EXTERNAL
必須の外部メソッド本体の参照句を示します。
次のキーワードを指定できます。
  • EXTERNALのみ。
  • EXTERNAL NAMEおよび外部メソッド名、および任意指定のパラメータ形式。
external_method_name
メソッド オブジェクトのエントリ ポイント。この名前はSYSUDTLIBデータベース内で固有である必要があります。
大文字小文字は区別され、CまたはC++メソッド名と一致していなければなりません。
EXTERNAL SECURITY
外部セキュリティ句の前に指定するキーワード。
この句はオペレーティング システムI/Oを実行するメソッドで必須です。
外部セキュリティ句を指定しないのに、定義されているメソッドがOS I/Oを実行する場合、そのI/Oの結果は予期不能です。最も考えられる結果はデータベースのクラッシュで、システム全体がクラッシュする場合もあります。
EXTERNAL SECURITY句の詳細とそれをUDFに使用する方法については、<Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184>のCREATE FUNCTIONまたはREPLACE FUNCTIONを参照してください。この情報は、メソッドおよび外部SQLプロシージャを含む、すべての外部ルーチンに当てはまる汎用的な情報です。
外部ルーチンの許可を作成する方法の詳細については、CREATE AUTHORIZATIONおよびREPLACE AUTHORIZATIONを参照してください。
DEFINER
メソッドが、この目的で作成された関連セキュリティ許可オブジェクトのクライアント ユーザーのコンテキストで実行されることを指定します。このオブジェクトはSYSUDTLIBに含まれています。
  • 許可名を指定する場合は、メソッドを呼び出す前にその名前で許可オブジェクトを定義する必要があります。
  • 許可名を指定しない場合は、デフォルトのDEFINER許可オブジェクトを定義する必要があります。
デフォルトの許可オブジェクトは、ユーザーがメソッドを実行する前に定義しておく必要があります。
指定された許可名がメソッドの作成時に存在しない場合は、許可名が存在しないことを示す警告が報告されます。
CREATE AUTHORIZATIONおよびREPLACE AUTHORIZATIONを参照してください。
authorization_name
任意指定の許可名を指定します。
INVOKER
メソッドは、この目的で存在するデフォルトの許可オブジェクトに関連したOSユーザー コンテキストで実行します。
CREATE AUTHORIZATIONおよびREPLACE AUTHORIZATIONを参照してください。