17.00 - 17.05 - tdr.SetAttributeByNdx - 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
日本語 (日本)

目的

現在の出力ストリーム行の個々の属性の値を設定します。

構文

tdr.SetAttributeByNdx(  handle,  index,  attribute, coldef)
handle
パラメータ型: raw vector

tdr.Open関数によって返される出力ストリームのハンドル。

index
パラメータ型: integer

属性のインデックス。有効範囲は0からn-1です。nはストリームの属性数です。インデックス0は最初の属性を示します。

attribute
パラメータ型: list

値およびNULL標識を含むリスト形式で設定される属性値。これは、tdr.GetAttributeByNdx関数呼び出しの戻り値です。

coldef
パラメータ型: list

ストリームのスキーマ。このスキーマは、列数と各列の定義を含むリストです。各定義には、特定の列のデータ型の列情報が含まれます。これはtdr.GetColDef関数の呼び出しの戻り値です。

coldefがNULLの場合、関数はcoldef情報を取得します。

使用上の注意

coldefパラメータを使用して、パフォーマンスを向上させることができます。coldef情報を関数に渡すと、関数は呼び出しの度にその情報を取得する必要がなくなります。ただし、オプションで代わりにNULLを渡すと、関数はcoldef情報を取得します。

この関数を呼び出す前に、tdr.Open関数を呼び出して、出力ストリームをオープンする必要があります。次にtdr.Openからこの関数の引数として返されたハンドルを渡します。

この関数は、テーブル演算子から呼び出された場合にのみ有効です。
関数では、以下の場合にエラーが発生します。
  • ハンドルが入力ストリームと関連している場合。
  • 出力ストリームが開いていない場合。
  • インデックスが無効な場合。
  • coldefリストに無効なデータ型、またはそのデータ型の属性の不完全なセットが含まれている場合。
  • 属性がタイプ リストのものではない場合。
  • 入力属性のタイプが特定のインデックスの属性のタイプと異なる場合。
  • この関数はコントラクト関数内で呼び出されました。

例: 出力ストリームの現在の行での最初の属性の設定

この例では、出力ストリームの現在の行で最初の属性を値123に設定します。

myatt <- list ( value=as.integer(123), nullIndicator=0 );
tdr.SetAttributeByNdx(outHandle, 0, myatt, NULL);

前の例では、NULLはcoldefパラメータとして渡されました。そのため、関数はcoldef情報を取得します。

次の例では、coldef情報が関数に渡されます。問合わせのパフォーマンスが向上します。

myatt <- list ( value=as.integer(123),nullIndicator=0);
coldef <- tdr.GetColDef(streamno, direction);
tdr.SetAttributeByNdx(outHandle, 0, myatt, coldef);