TTXlaRowViewerリファレンス

変更通知レコードからの行イメージを表すTTXlaRowViewerを使用すると、XLA変更通知レコードの構造と新旧の列値を検証できます。

パブリック・メンバー

なし

パブリック・メソッド

この項では、TTXlaRowViewerパブリック・メソッドの概要を説明します。

パブリック・メソッドの概要

メソッド 説明

columnPrec()

行イメージの指定した列の精度を返します。

columnScale()

行イメージの指定した列のスケールを返します。

Get()

行イメージ内の指定した列の値をフェッチします。

getColumn()

行イメージから指定した列を返します。

isColumnTTTimestamp()

行イメージ内の指定した列がTT_TIMESTAMP列であるかどうかを示します。

isNull()

行イメージ内の指定した列にNULL値があるかどうかを示します。

numUpdatedCols()

行イメージ内で更新した列数を返します。

setTuple()

TTXlaRowViewerオブジェクトを指定された行イメージに関連付けます。

updatedCol()

通常は、すべての更新済列に対する反復処理中に、更新された列の行イメージ内での列番号を返します。

columnPrec()

SQLULEN columnPrec(int cno)

行イメージ内の列番号cnoのデータの、データ型で使用される桁の最大数である精度を返します。

columnScale()

int columnScale(int cno)

行イメージ内の列番号cnoのデータのスケールを返します(小数点以下の最大桁数)。

Get()

void Get(int cno, TYPE* valueP)
void Get(int cno, TYPE* valueP, SQLULEN* byteLenP)

行イメージ内の列番号cno値を取得します。これらのメソッドは、TTCmd::getColumn()メソッドによく似ています。

表5-1に、サポートされるSQLデータ型および各データ型での使用に適したGet()のバージョンを示します。格納されるデータ型の種類に従って、アプリケーションを設計します。たとえば、データ型NUMBER(9,0)には、Get(int、int*)メソッドを使用すると、データを損失することなくアクセスできます。

表5-1 サポートされる表の列型のGet()シグネチャ

XLAデータ型 データベース・データ型 Get()のバージョン

TTXLA_CHAR_TT

TT_CHAR

Get(int cno, char** cPP)

TTXLA_NCHAR_TT

TT_NCHAR

Get(int cno, SQLWCHAR** wcPP, SQLULEN* byteLenP)

TTXLA_VARCHAR_TT

TT_VARCHAR

Get(int cno, char** cPP)

TTXLA_NVARCHAR_TT

TT_NVARCHAR

Get(int cno, SQLWCHAR** wcPP, SQLULEN* byteLenP)

TTXLA_TINYINT

TT_TINYINT

Get(int cno, SQLTINYINT* iP)

TTXLA_SMALLINT

TT_SMALLINT

Get(int cno, short* iP)

TTXLA_INTEGER

TT_INTEGER

Get(int cno, int* iP)

TTXLA_BIGINT

TT_BIGINT

Get(int cno, SQLBIGINT* biP)

TTXLA_BINARY_FLOAT

BINARY_FLOAT

Get(int cno, float* fP)

TTXLA_BINARY_DOUBLE

BINARY_DOUBLE

Get(int cno, double* dP)

TTXLA_TIME

TT_TIME

Get(int cno, TIME_STRUCT* tP)

TTXLA_DATE_TT

TT_DATE

Get(int cno, DATE_STRUCT* dP)

TTXLA_TIMESTAMP_TT

TT_TIMESTAMP

Get(int cno, TIMESTAMP_STRUCT* tsP)

TTXLA_BINARY

BINARY

Get(int cno, const void** binPP, SQLULEN* byteLenP)

TTXLA_VARBINARY

VARBINARY

Get(int cno, const void** binPP, SQLULEN* byteLenP)

TTXLA_NUMBER

NUMBER

Get(int cno, double* dP)
Get(int cno, char** cPP)
Get(int cno, short* iP)
Get(int cno, int* iP)
Get(int cno, SQLBIGINT* biP)

TTXLA_DATE

DATE

Get(int cno, TIMESTAMP_STRUCT* tsP)

TTXLA_TIMESTAMP

TIMESTAMP

Get(int cno, TIMESTAMP_STRUCT* tsP)

TTXLA_CHAR

CHAR

Get(int cno, char** cPP)

TTXLA_NCHAR

NCHAR

Get(int cno, SQLWCHAR** wcPP, SQLULEN* byteLenP)

TTXLA_VARCHAR

VARCHAR2

Get(int cno, char** cPP)

TTXLA_NVARCHAR

NVARCHAR2

Get(int cno, SQLWCHAR** wcPP, SQLULEN* byteLenP)

TTXLA_FLOAT

FLOAT

Get(int cno, double* dP)
Get(int cno, char** cPP)

TTXLA_BLOB

BLOB

Get(int cno, const void** binPP, SQLULEN* byteLenP)

TTXLA_CLOB

CLOB

Get(int cno, char** cPP)

TTXLA_NCLOB

NCLOB

Get(int cno, SQLWCHAR** wcPP, SQLULEN* byteLenP)

getColumn()

const TTXlaColumn* getColumn(u_int cno) const

TTXlaColumnオブジェクトを、行イメージ内の列番号cnoのメタデータとともに返します。

isColumnTTTimestamp()

bool isColumnTTTimestamp(int cno)

行イメージの列番号cnoTT_TIMESTAMP列の場合は、TRUEを返し、それ以外の場合はFALSEを返します。

isNull()

bool isNull(int cno)

行イメージ内の列番号cnoの値がNULLである場合はTRUEを返し、そうでない場合はFALSEを返します。

numUpdatedCols()

SQLUSMALLINT numUpdatedCols()

行イメージ内で更新された列数を返します。

setTuple()

void setTuple(ttXlaUpdateDesc_t* updateDescP, int whichTuple)

行を検証する前に、このメソッドをまずコールして、特定の行イメージとTTXlaRowViewerオブジェクトを関連付ける必要があります。これはTTXlaTableHandler::HandleInsert()HandleUpdate()またはHandleDelete()メソッド内で起動されるか、ユーザー記述のオーバーロードされたメソッドによって起動されます。これは、通常、TTXlaTableHandler::HandleChange()メソッドをオーバーロードする際に、コールします。TimesTen Classicクイック・スタートのxlasubscriber1デモには、この使用方法の例が含まれています。(TimesTenクイック・スタートおよびサンプル・アプリケーションについてを参照してください。)

TTXlaPersistConnection::fetchUpdatesWait()によって返されるttXlaUpdateDesc_t構造体に含まれる行の数は、0(ゼロ)、1または2です。次の点に注意してください。

  • 表に挿入された行を定義する構造体には、挿入された行の行イメージが含まれます。

  • 表から削除された行を定義する構造体には、削除された行の行イメージが含まれます。

  • 表内で更新された行を定義する構造体には、更新前の行イメージと更新後の行イメージが含まれます。

  • 表またはデータベースの他の変更を定義する構造体には、行イメージが含まれません。たとえば、索引が削除されたことをレポートする構造体には行イメージが含まれません。

setTuple()メソッドは2つの引数を受け入れます。

  • データベース変更を定義する特定のttXlaUpdateDesc_t構造体へのポインタ

  • 更新構造体内のどのタイプの行イメージを調べるかを指定する整数。

    有効な値は、次のとおりです。

    • INSERTED_TUP: 新しく挿入された行を調べます。

    • DELETED_TUP: 削除された行を調べます。

    • UPDATE_OLD_TUP: 更新前の行を調べます。

    • UPDATE_NEW_TUP: 更新後の行を調べます。

updatedCol()

SQLUSMALLINT updatedCol(u_int cno)

更新された列の列番号を返します。入力パラメータには、1からnを繰り返すことができます(ここで、nnumUpdatedCols()から返される数字です)。次の例に、更新された各行を取得するためにupdatedCol()numUpdatedCols()を使用する、TimesTen Classicのクイック・スタート・デモのxlasubscriber1のスニペットを示します。(TimesTenクイック・スタートおよびサンプル・アプリケーションについてを参照してください。)

void
SampleHandler::HandleUpdate(ttXlaUpdateDesc_t* )
{
  cerr << row2.numUpdatedCols() << " column(s) updated: ";
  for ( int i = 1; i <= row2.numUpdatedCols(); i++ )
  {
    cerr << row2.updatedCol(i) << "("
         << row2.getColumn(row2.updatedCol(i)-1)->getColName() << ") ";
  }
  cerr << endl;
}