TTXlaRowViewerリファレンス
変更通知レコードからの行イメージを表すTTXlaRowViewer
を使用すると、XLA変更通知レコードの構造と新旧の列値を検証できます。
TTXlaRowViewerの使用方法も参照してください。
パブリック・メソッド
この項では、TTXlaRowViewer
パブリック・メソッドの概要を説明します。
パブリック・メソッドの概要
メソッド | 説明 |
---|---|
行イメージの指定した列の精度を返します。 |
|
行イメージの指定した列のスケールを返します。 |
|
行イメージ内の指定した列の値をフェッチします。 |
|
行イメージから指定した列を返します。 |
|
行イメージ内の指定した列が |
|
行イメージ内の指定した列に |
|
行イメージ内で更新した列数を返します。 |
|
|
|
通常は、すべての更新済列に対する反復処理中に、更新された列の行イメージ内での列番号を返します。 |
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()のバージョン |
---|---|---|
|
|
|
|
|
|
|
|
Get(int cno, char** cPP) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getColumn()
const TTXlaColumn* getColumn(u_int cno) const
TTXlaColumn
オブジェクトを、行イメージ内の列番号cno
のメタデータとともに返します。
isColumnTTTimestamp()
bool isColumnTTTimestamp(int cno)
行イメージの列番号cno
がTT_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
を繰り返すことができます(ここで、n
はnumUpdatedCols()
から返される数字です)。次の例に、更新された各行を取得するために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;
}