パラメータ名とデータ型 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

パラメータ リストには、外部プロシージャに渡す変数のリストが含まれます。渡すパラメータが存在しない場合でも、リストには左右の括弧があります。

各パラメータ データ型は、外部プロシージャとの間でやり取りされるパラメータのデータ型を定義するために必須データ型と関連付けられています。TD_ANYTYPEおよびVARIANT_TYPEを含め、任意の有効なデータ型を指定できます(データ型の完全なリストについては、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください)。

VARIANT_TYPEデータ型は入力パラメータにのみ指定できますが、TD_ANYTYPEはすべてのパラメータに指定できることに注意してください。文字データ型では、関連するCHARACTER SET句も指定できます。

TD_ANYTYPEをパラメータのデータ型として使用するプロシージャを定義することによって、名前ではなくサーバー文字セットまたは数値の精度に基づいてプロシージャをオーバーロードできます。TD_ANYTYPEを使用するプロシージャを定義すると、データベースは、提供されるパラメータに基づき、実行時にパラメータのデータ型を判別します。

TD_ANYTYPEを未判別の属性を持つパラメータ データ型のタイプの別名として使用できるだけでなく、TD_ANYTYPEを使用してすべての可能なパラメータ データ型を解釈できます。これにより、同じ基本プロシージャに対して開発するプロシージャ シグネチャの数が少なくなるだけでなく、必要なプロシージャの動作のロジックを柔軟にコーディングできます。

ただし、パラメータ データ型としてTD_ANYTYPEを使用すると、入力値をプロシージャ シグネチャに一致する値に自動的に変換する暗黙的な変換が失われます。そのため、未定義のパラメータが適切に解釈されて処理されていることを必ず確認する必要があります。

TD_ANYTYPEの詳細について、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。また、TD_ANYTYPEデータ型を利用するための外部プロシージャのコーディング方法の詳細について、<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照してください。

KANJI1のサーバー文字セットを持つ文字パラメータ データ型は指定できません。それ以外の場合、データベースはリクエストをアボートし、リクエスト側にエラーを返します。

プロシージャの外部ルーチン作成言語 パラメータ リストで指定可能なパラメータの最大数
  • C
  • C++
256
Java 255

パラメータ名はCOMMENT文によって使用されます(COMMENT(コメント配置形式)を参照、HELP PROCEDURE文によって報告される)(HELP PROCEDUREを参照)。外部プロシージャ呼び出しによって切捨てエラーまたはオーバーフロー エラーが生じた場合は、パラメータ名も、関連するデータベース名やプロシージャ名とともにエラー メッセージのテキストに含められて返されます。

以下の表に、文字列の切捨てに関連した標準Teradataセッション モードの動作を示します。

セッション モード 結果
ANSI 文字列内の埋込み文字は自動的に切り捨てられて、リクエスト側には切捨て通知が返されません。

埋め込み文字ではない文字が切り捨てられると、切捨て例外が返されます。

切捨て例外があると、システムはプロシージャを呼び出しません。

Teradata 文字列は自動的に切り捨てられて、リクエスト側に切捨て通知メッセージが返されません。

TD_GENERALとSQLの各パラメータ形式のパラメータ受け渡し規則については、PARAMETER STYLE句および<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照してください。

クライアント アプリケーションに返すことができるプロシージャIN、INOUT、およびOUTパラメータのデータ型エンコーディングについての一覧は、<Teradata Vantage™ - SQLストアド プロシージャおよび埋め込みSQL、B035-1148>のSQL記述領域(SQLDA)の資料を参照してください。