XLA関数リファレンス
この項では、XLAコア関数およびXLAデータ型変換関数のリファレンス情報を示します。
関数は、アルファベット順に示されています。
ノート:
レプリケーション・メカニズムとしてのXLAの場合のみ使用される関数については、別の項「XLAレプリケーション関数リファレンス」を参照してください。
ttXlaAcknowledge
説明
この関数は、1つ以上のレコードがttXlaNextUpdate関数またはttXlaNextUpdateWait関数によってトランザクション・ログから読み取られたことを確認するために使用します。
この関数をコールすると、以前に返されたいずれのレコードも再読取りできないようにブックマークが再設定されます。ttXlaAcknowledgeは、メッセージが完全に処理された場合にのみコールします。
ノート:
-
ブックマークは、指定したハンドルに対してのみ再設定されます。システム内の他のハンドルは、以前のトランザクションにアクセス可能な場合があります。
-
ブックマークは、確認する関連更新レコードがない場合でも再設定されます。
ttXlaAcknowledgeは、必要な場合にのみ使用する必要がある高コストの処理です。XLAではトランザクション・ログ・ファイルが一度に1つしかパージされないため、トランザクション・ログ・ファイルを読み取るたびにttXlaAcknowledgeを複数回コールしても、トランザクション・ログのボリュームは減少しません。新しいトランザクション・ログ・ファイルの生成を検出するには、システム表SYS.TRANSACTION_LOG_APIのブックマークのpurgeLSN(PURGELSNHIGHとPURGELSNLOWの値で示される)を調べることで、ブックマークが含まれるログ・ファイルを確認できます。その後、ttXlaAcknowledgeをコールして、古いトランザクション・ログ・ファイルをパージできます。(この表を表示するには、ADMINまたはSELECT ANY TABLE権限が必要です。)
ttXlaAcknowledgeの2番目の目的は、XLAREUSEオプションが指定されたttXlaPersistOpen関数をコールして、以前使用されたブックマークに接続する場合に確認されたレコードがXLAアプリケーションで認識されないようにすることです。ブックマークを再利用する場合、ttXlaCloseをコールする前にttXlaAcknowledgeをコールしてブックマークの位置を現在のレコードに再設定します。
「トランザクション・ログからの更新レコードの取得」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaAcknowledge(ttXlaHandle_h handle)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログ・ハンドル |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
rc = ttXlaAcknowledge(xlahandle);
ttXlaClose
説明
ttXlaPersistOpenによってオープンされたXLAハンドルをクローズします。「XLAアプリケーションの終了」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaClose(ttXlaHandle_h handle)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのODBCハンドル |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
前述の例でオープンしたXLAハンドルをクローズするには、次のコールを実行します。
rc = ttXlaClose(xlahandle);
関連項目
ttXlaConvertCharType
説明
colinfoおよびtupパラメータで示されている列データを、トランザクション・ログ・ハンドルに関連付けられている接続文字セットに変換し、結果をバッファに格納します。
必要な権限
XLA
構文
SQLRETURN ttXlaConvertCharType (ttXlaHandle_h handle,
ttXlaColDesc_t* colinfo,
void* tup,
void* buf,
size_t buflen)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
列記述を保持するバッファへのポインタ |
|
|
|
|
変換されるデータ |
|
|
|
変換されたデータが格納される場所 |
|
|
|
変換されたデータが格納されるバッファのサイズ |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaDateToODBCCType
説明
TTXLA_DATE_TT値を、アプリケーションで使用可能なODBC C値に変換します。「複合データ型の変換」を参照してください。
この関数は、TTXLA_DATE_TTデータ型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaDateToODBCCType(void* fromData,
out DATE_STRUCT* returnData)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたDATE値へのポインタ |
|
|
|
変換された日付を保持するように割り当てられた記憶域へのポインタ |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaDecimalToCString
TTXLA_DECIMAL_TT値を、アプリケーションで使用可能な文字列に変換します。
説明
scaleおよびprecisionの値は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。scaleパラメータにより、小数点以下の最大桁数を指定します。DECIMAL値が1より大きい場合は、precisionパラメータにより、小数点をはさんだ最大桁数を指定します。DECIMAL値が1より小さい場合、precisionはscaleと同じになります。
この関数は、TTXLA_DECIMAL_TT型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
「複合データ型の変換」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaDecimalToCString(void* fromData,
out char* returnData,
SQLSMALLINT precision,
SQLSMALLINT scale)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたDECIMAL値へのポインタ |
|
|
|
変換された文字列を保持するように割り当てられた記憶域へのポインタ |
|
|
|
|
|
|
|
小数点以下の最大桁数 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、ttXlaColDesc_t構造体からoffset、precisionおよびscaleの値を取得し、トランザクション・ログ・レコードに返された行からDECIMAL値(pColVal)を取得するためにoffsetを使用していると想定しています。
char decimalData[50];
static ttXlaColDesc_t colDesc[255];
rc = ttXlaDecimalToCString(pColVal, (char*)&decimalData,
colDesc->precision,
colDesc->scale);ttXlaDeleteBookmark
説明
指定したトランザクション・ログ・ハンドルに関連付けられているブックマークを削除します。ブックマークは削除するとアクセスできなくなり、ブックマークの識別子は別のブックマークで再利用できます。ブックマークを削除すると、データベース・ハンドルとの関連が失われ、XLANONEオプションを指定して接続をオープンした場合と同じ結果になります。
ブックマークを使用している場合は、不要になるまで削除できません。
「ブックマークの削除」を参照してください。
ノート:
-
この関数をTimesTenの組込みプロシージャ
ttXlaBookmarkDeleteと混同しないでください(『Oracle TimesTen In-Memory Databaseリファレンス』のttXlaBookmarkDeleteを参照)。 -
レプリケーション・エージェントの実行中は、レプリケートされたブックマークを削除できません。
必要な権限
XLA
構文
SQLRETURN ttXlaDeleteBookmark(ttXlaHandle_h handle)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログ・ハンドル |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
xlahandleのブックマークを削除します。
rc = ttXlaDeleteBookmark(xlahandle);
ttXlaError
説明
特定のトランザクション・ログ・ハンドルに対して以前コールした際に発生したエラーの詳細をレポートします。ttXlaErrorへの後続のコールで、複数のエラーが返される場合があります。エラー・スタックは、ttXlaError自体およびttXlaErrorRestart以外の関数をコールするたびに消去されます。
この関数の使用については、「XLAエラー処理」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaError(ttXlaHandle_h handle,
out SQLINTEGER* errCode,
out char* errMessage,
SQLINTEGER maxLen,
out SQLINTEGER* retLen)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
|
|
|
|
|
エラー・テキストが保持されるバッファ |
|
|
|
|
|
|
|
エラー・メッセージの実際のサイズ |
結果
エラー情報が返される場合はSQL_SUCCESSを返し、またはエラー・スタックにそれ以上エラーがない場合はSQL_NO_DATA_FOUNDを返します。errMessageのバッファの大きさが十分でない場合、ttXlaErrorはSQL_SUCCESS_WITH_INFOを返します。
ノート:
SQL_NO_DATA_FOUNDは、sqlext.h (timesten.hに含まれています)に定義されています。
例
エラー・スタックに複数のエラーが存在する可能性があります。この例では、それらをすべて読み取る方法を示します。
char message[100];
SQLINTEGER code;
for (;;) {
rc = ttXlaError(xlahandle, &code, message, sizeof (message), &retLen);
if (rc == SQL_NO_DATA_FOUND)
break;
if (rc == SQL_ERROR) {
printf("Error in fetching error message\n");
break;
}
else {
printf("Error code %d: %s\n", code, message);
}
}ノート
複数のスレッドを使用して単一のXLA接続のTimesTenトランザクション・ログにアクセスすると、同時アクセスを制御するためのラッチが作成されます。なんらかの理由でスレッドでラッチを取得できない場合、XLA関数はSQL_INVALID_HANDLEを返します。
関連項目
ttXlaErrorRestart
説明
アプリケーションでエラーを再度読み取ることができるように、エラー・スタックをリセットします。「XLAエラー処理」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaErrorRestart(ttXlaHandle_h handle)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
rc = ttXlaErrorRestart(xlahandle);
関連項目
ttXlaGetColumnInfo
説明
表内のすべての列に関する情報を取得します。返される列の数についての出力パラメータ(nreturned)は、colinfoに返される列の数に設定されます。systemTableIDまたはuserTableIDパラメータにより、目的の表について記述します。このコールは、表の定義内の変更に対してシリアライズされます。
「列記述の取得」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaGetColumnInfo(ttXlaHandle_h handle,
SQLUBIGINT systemTableID,
SQLUBIGINT userTableID,
out ttXlaColDesc_t* colinfo,
SQLINTEGER maxcols,
out SQLINTEGER* nreturned)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
|
表のシステムID |
|
|
|
表のユーザーID |
|
|
|
|
|
|
|
この表に |
|
|
|
返される列の数 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、次の定義を想定しています。
ttXlaColDesc_t colinfo[20]; SQLUBIGINT systemTableID, userTableID; SQLINTEGER ncols;
システム表識別子を使用して最大20列の記述を取得するには、次のコールを実行します。
rc = ttXlaGetColumnInfo(xlahandle, systemTableID, 0, colinfo, 20, &ncols);
ユーザー表識別子も、同様に使用できます。
rc = ttXlaGetColumnInfo(xlahandle, 0, userTableID, colinfo, 20, &ncols);
返された行の列データにアクセスする方法の詳細および例は、「ttXlaColDesc_t」を参照してください。
ttXlaGetLSN
説明
トランザクション・ログ・ハンドルで指定された接続の現行読取りログ・レコード識別子を返します。「ブックマークのしくみ」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaGetLSN(ttXlaHandle_h handle,
out tt_XlaLsn_t* LSN)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
ハンドルの現行読取りログ・レコード識別子 |
ノート:
tt_XlaLsn_tの、具体的にはlogFileおよびlogOffsetフィールドの使用方法が以前のリリースとは異なり、これらのフィールドが、連続的に増加するLSNではなく、ログ・レコード識別子を参照する点に注意してください。「tt_XlaLsn_t」内のノートを参照してください。
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、現行読取りログ・レコード識別子CurLSNを返します。
tt_XlaLsn_t CurLSN; rc = ttXlaGetLSN(xlahandle, &CurLSN);
関連項目
ttXlaGetTableInfo
説明
表内の行に関する情報を取得します(ttXlaTblDesc_tデータ型に関する説明を参照)。userTableIDパラメータが0(ゼロ)以外の場合は、その値を使用して目的の表を検索します。そうでない場合は、systemTableIDの値を使用して表を検索します。両方が0(ゼロ)の場合は、エラーが返されます。記述は、出力パラメータtblinfoに格納されます。このコールは、表の定義内の変更に対してシリアライズされます。
必要な権限
XLA
構文
SQLRETURN ttXlaGetTableInfo(ttXlaHandle_h handle,
SQLUBIGINT systemTableID,
SQLUBIGINT userTableID,
out ttXlaTblDesc_t* tblinfo)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
|
システム表ID |
|
|
|
ユーザー表ID |
|
|
行の情報 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、次の定義を想定しています。
ttXlaTblDesc_t tabinfo; SQLUBIGINT systemTableID, userTableID;
システム識別子を使用して表の情報を取得するには、ttXlaTableByNameまたは他の方法を使用してシステム表識別子を検出して次のコールを実行します。
rc = ttXlaGetTableInfo(xlahandle, systemTableID, 0, &tabinfo);
また、表の情報は、ユーザー表識別子を使用して取得することもできます。
rc = ttXlaGetTableInfo(xlahandle, 0, userTableID, &tabinfo);
関連項目
ttXlaGetVersion
説明
この関数は、古いバージョンのXLA用に作成されたXLAアプリケーションを新しいバージョンで動作させるために、ttXlaSetVersionと組み合せて使用します。通常、configured versionが古いバージョンで、actual versionが新しいバージョンです。
この関数は、現在構成されているXLAのバージョンを取得し、それをconfiguredVersionパラメータに格納します。基礎となるXLAの実際のバージョンはactualVersionに格納されます。ttXlaSetVersionをコールしたため、コールごとにconfiguredVersionの結果が異なる場合がありますが、actualVersionの結果は同じままです。
必要な権限
XLA
構文
SQLRETURN ttXlaGetVersion(ttXlaHandle_h handle,
out ttXlaVersion_t* configuredVersion,
out ttXlaVersion_t* actualVersion)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
構成されているXLAのバージョン |
|
|
|
|
XLAの実際のバージョン |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、次の指示を想定しています。
ttXlaVersion_t configured, actual;
現行のバージョン構成を確認するには、次のコールを実行します。
rc = ttXlaGetVersion(xlahandle, &configured, &actual);
ttXlaNextUpdate
説明
この関数は、トランザクション・ログから更新レコードの指定した最大数をフェッチし、コミットされたトランザクションに関連付けられているレコードを指定したバッファに返します。実際に返されたレコードの数が出力パラメータnreturnedに記録されます。この関数を使用するには、ブックマークがデータベース内に存在し、関数で使用する接続と関連付けられる必要があります。
ttXlaNextUpdateをコールするたびに、最後に読み取られたレコードにブックマークが再設定され、次のレコードのリストを返すためにttXlaNextUpdateへの次のコールが有効にされます。
「トランザクション・ログからの更新レコードの取得」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaNextUpdate(ttXlaHandle_h handle,
out ttXlaUpdateDesc_t*** records,
SQLINTEGER maxrecords,
out SQLINTEGER* nreturned)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
完了したトランザクション・レコードを保持するバッファ |
|
|
|
|
フェッチされるレコードの最大数 |
|
|
|
実際に返されたレコードの数ですが、使用可能な更新データがない場合は、0(ゼロ)が返されます。 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、最大100個のレコードを取得し、各レコードが処理されるループについて記述します。
ttXlaUpdateDesc_t** records;
SQLINTEGER nreturned;
SQLINTEGER i;
rc = ttXlaNextUpdate(xlahandle, &records, 100, &nreturned);
/* Check for errors; if none, process the records */
for (i = 0; i < nreturned; i++) {
process(records[i]);
}ノート
追跡ステータスに関係なく、すべてのデータ定義文に対して更新が生成されます。また、更新はブックマークに関係付けられているすべての追跡対象表でのデータ更新処理に対して生成されます。
また、表および列に対するアプリケーション・レベルの識別子の割当て、表の追跡ステータスの変更などの特定の処理でも更新が生成されます。
ttXlaNextUpdateWait
説明
これは、ttXlaNextUpdate関数と同様の処理を行いますが、使用可能なレコードがトランザクション・ログにない場合の待機秒数を指定するパラメータsecondsがあります。実際に待機する秒数は、secondsに指定された値より最大2秒長くなる可能性があります。
「トランザクション・ログからの更新レコードの取得」も参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaNextUpdateWait(ttXlaHandle_h handle,
out ttXlaUpdateDesc_t*** records,
SQLINTEGER maxrecords,
out SQLINTEGER* nreturned,
SQLINTEGER seconds)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
完了したトランザクション・レコードを保持するバッファ |
|
|
|
|
フェッチされるレコードの最大数 ノート: 有効な最大値は1000レコードです。 |
|
|
|
実際に返されたレコードの数ですが、secondsの待機時間内に使用可能な更新データがない場合は、0(ゼロ)が返されます。 |
|
|
|
ログが空の場合に待機する時間(秒) |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
最大100個のレコードを取得し、使用可能なレコードがトランザクション・ログにない場合に最大60秒待機します。
ttXlaUpdateDesc_t** records;
SQLINTEGER nreturned;
SQLINTEGER i;
rc = ttXlaNextUpdateWait(xlahandle, &records, 100, &nreturned, 60);
/* Check for errors; if none, process the records */
for (i = 0; i < nreturned; i++) {
process(records[i]);
}ttXlaNumberToBigInt
説明
TTXLA_NUMBER値を、アプリケーションで使用可能なSQLBIGINT値に変換します。
この関数は、TTXLA_NUMBER型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaNumberToBigInt(void* fromData,
SQLBIGINT* bint)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA NUMBER値から変換された |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaNumberToCString
説明
TTXLA_NUMBER値を、アプリケーションで使用可能な文字列に変換します。
この関数は、TTXLA_NUMBER型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaNumberToCString(ttXlaHandle_h handle,
void* fromData,
char* buf,
int buflen
int* reslen)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
変換されたデータが格納される場所 |
|
|
|
変換されたデータが格納されるバッファのサイズ |
|
|
|
|
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaNumberToDouble
説明
TTXLA_NUMBER値を、アプリケーションで使用可能な長い浮動小数点数値に変換します。
この関数は、TTXLA_NUMBER型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaNumberToDouble(void* fromData,
double* dbl)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA NUMBER値から変換された長い浮動小数点数値 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaNumberToInt
説明
TTXLA_NUMBER値を、アプリケーションで使用可能なSQLINTEGER値に変換します。
この関数は、TTXLA_NUMBER型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaNumberToInt(void* fromData,
SQLINTEGER* ival)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA NUMBER値から変換された |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaNumberToSmallInt
説明
TTXLA_NUMBER値を、アプリケーションで使用可能なSQLSMALLINT値に変換します。
この関数は、TTXLA_NUMBER型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaNumberToSmallInt(void* fromData,
SQLSMALLINT* smint)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA NUMBER値から変換された |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaNumberToTinyInt
説明
TTXLA_NUMBER値を、アプリケーションで使用可能な小さい整数値に変換します。
この関数は、TTXLA_NUMBER型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaNumberToTinyInt(void* fromData,
SQLCHAR* tiny)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA NUMBER値から変換された小さい整数値 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaNumberToUInt
説明
TTXLA_NUMBER値を、アプリケーションで使用可能な符号なし整数値に変換します。
この関数は、TTXLA_NUMBER型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaNumberToInt(void* fromData,
SQLUINTEGER* ival)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA NUMBER値から変換された整数値 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaOraDateToODBCTimeStamp
説明
TTXLA_DATE値をODBCタイムスタンプに変換します。
この関数は、TTXLA_DATE型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaOraDateToODBCTimeStamp(void* fromData,
TIMESTAMP_STRUCT* returnData)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA Oracle Database |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaOraTimeStampToODBCTimeStamp
説明
TTXLA_TIMESTAMP値をODBCタイムスタンプに変換します。
この関数は、TTXLA_TIMESTAMP型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
構文
SQLRETURN ttXlaOraTimeStampToODBCTimeStamp(void* fromData,
TIMESTAMP_STRUCT* returnData)必要な権限
XLA
パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたNUMBER値へのポインタ |
|
|
|
XLA Oracle Database |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
ttXlaPersistOpen
説明
データベースに対するトランザクション・ログ・ハンドルを初期化して、トランザクション・ログへのアクセスを有効にします。hdbcパラメータは、データベースへのODBC接続ハンドルです。ODBC接続ごとに1つのXLAハンドルのみを作成します。ODBC接続に対してXLAハンドルを作成してから、ttXlaCloseでクローズするまで、ODBC接続に対して他のODBCコールは発行しないでください。
tagは、XLAブックマークを特定する文字列です(「XLAブックマークについて」を参照)。tagでは、optionsパラメータの指定に応じて、新しいブックマーク(レプリケートされていないブックマークまたはレプリケートされたブックマーク)、またはシステムに存在するブックマークを識別できます。handleパラメータは、このコールによって初期化され、XLAに対する後続の各コールで指定する必要があります。
一部の処理は、ブックマークなしで実行できます。これらのタイプの処理を実行する場合は、XLANONEオプションを使用して、ブックマークなしでトランザクション・ログにアクセスできます。次に、ブックマークなしでは実行できない処理を示します。
複数のアプリケーションが同時にトランザクション・ログから読取りを実行できます。「XLAの初期化およびXLAハンドルの取得」を参照してください。
この関数が成功すると、XLAは自動コミット・モードをOFFに設定します。
この関数が失敗しても、まだハンドルを作成する場合は、メモリー・リークを防ぐためにハンドルを閉じる必要があります。
ノート:
このコールによって領域が割り当てられます。終了後にttXlaCloseをコールして、領域を解放します。
必要な権限
XLA
構文
SQLRETURN ttXlaPersistOpen(SQLHDBC hdbc,
SQLCHAR* tag,
SQLUINTEGER options,
out ttXlaHandle_h* handle)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのODBCハンドル |
|
|
|
XLAブックマークの識別子
|
|
|
|
ブックマークのオプション:
|
|
|
|
このコールによって返されるトランザクション・ログ・ハンドル |
結果
コールが成功した場合は、SQL_SUCCESSまたはSQL_SUCCESS_WITH_INFOを返します。そうでない場合は、引数として渡されたHDBC接続ハンドルでSQLErrorをコールします。
例
この例では、トランザクション・ログをオープンし、xlahandleというハンドルを返して、mybookmarkという新しいレプリケートされていないブックマークを作成します。
SQLHDBC hdbc;
ttXlaHandle_h xlahandle;
rc = ttXlaPersistOpen(hdbc, ( SQLCHAR*)mybookmark,
XLACREAT, &xlahandle);
または、次のように新しいレプリケートされたブックマークを作成します。
SQLHDBC hdbc;
ttXlaHandle_h xlahandle;
rc = ttXlaPersistOpen(hdbc, ( SQLCHAR*)mybookmark,
XLAREPL, &xlahandle);ノート
マルチスレッド・アプリケーションでは、スレッドごとに別々のXLAハンドルを作成する必要があります。複数のスレッドで同じXLAハンドルを使用する必要がある場合は、1つのスレッドのみが一度に1つのXLA処理を実行できるように、mutexを使用してそのXLAハンドルへのスレッド・アクセスをシリアライズします。
ttXlaRowidToCString
説明
ROWID値を、アプリケーションで使用可能な文字列値に変換します。
必要な権限
XLA
構文
SQLRETURN ttXlaRowidToCString(void* fromData, char* buf, int buflen)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返された |
|
|
|
変換された文字列を保持するように割り当てられた記憶域へのポインタ |
|
|
|
変換された文字列の長さ |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
char charbuf[18]; void* rowiddata; /* ... */ rc = ttXlaRowidToCString(rowiddata, charbuf, sizeof(charbuf));
ttXlaSetLSN
説明
トランザクション・ログ・ハンドルで指定されたデータベースの現行読取りログ・レコード識別子を設定します。その指定されたLSN値は、ttXlaGetLSNによって返されることになります。ユーザーが作成した値および現在のブックマークの初期読取りログ・レコード識別子より小さい値にはなりません。
この関数の使用については、「XLAブックマークについて」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaSetLSN(ttXlaHandle_h handle,
tt_XlaLsn_t* LSN)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
ハンドルの新しいログ・レコード識別子 |
ノート:
tt_XlaLsn_tの、具体的にはlogFileおよびlogOffsetフィールドの使用方法が以前のリリースとは異なり、これらのフィールドが、連続的に増加するLSNではなく、ログ・レコード識別子を参照する点に注意してください。「tt_XlaLsn_t」内のノートを参照してください。
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、現行読取りログ・レコード識別子をCurLSNに設定します。
tt_XlaLsn_t CurLSN; rc = ttXlaSetLSN(xlahandle, &CurLSN);
関連項目
ttXlaSetVersion
説明
アプリケーションで使用されるXLAのバージョンを設定します。このバージョンは、ttXlaGetVersionまたは以前のバージョンで返されるバージョンと同じである必要があります。
必要な権限
XLA
構文
SQLRETURN ttXlaSetVersion(ttXlaHandle_h handle,
ttXlaVersion_t* version)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
必要なXLAのバージョン |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
構成されているバージョンをrequestedVersionで指定された値に設定するには、次のコールを実行します。
rc = ttXlaSetVersion(xlahandle, &requestedVersion);
ttXlaTableByName
説明
表またはビューの所有者および名前を指定して、表またはマテリアライズド・ビューのシステム表識別子およびユーザー表識別子を検出します。「更新を監視する表の指定」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaTableByName(ttXlaHandle_h handle,
char* owner,
char* name,
out SQLUBIGINT* sysTableID,
out SQLUBIGINT* userTableID)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
|
表またはビューの所有者の文字列 |
|
|
|
表またはビューの名前 |
|
|
|
システム表ID |
|
|
|
ユーザー表ID |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
表PURCHASING.INVOICESに関連付けられているシステム表IDおよびユーザー表IDを取得するには、次のコールを実行します。
SQLUBIGINT sysTableID;
SQLUBIGINT userTableID;
rc = ttXlaTableByName(xlahandle, "PURCHASING", "INVOICES",
&sysTableID, &userTableID);関連項目
ttXlaTableStatus
説明
表の更新ステータスを返します。ユーザーID (userTableID)またはシステムID (systemTableID)のどちらかを指定することで表を特定します。userTableIDが0(ゼロ)以外の場合は、その値を使用して表が検索されます。そうでない場合は、systemTableIDが使用されます。両方が0(ゼロ)の場合は、エラーが返されます。
newstatusに値を指定すると、更新ステータスが*newstatusに設定されます。ステータスが0(ゼロ)以外の場合は、systemTableIDで指定された表がXLAで使用可能であることを意味します。0(ゼロ)の場合は、表が追跡されないことを意味します。表の更新ステータスへの変更は、すぐに有効になります。
更新が実行された時点で表の更新追跡が有効になっていた場合にのみ、表への更新が追跡されます。このコールは、基礎となる表への更新に対してシリアライズされます。このため、表を更新するトランザクションは、表のステータスが変更される完全前または完全後に実行されます。
ttXlaTableStatusを使用するには、ユーザーはブックマークに接続する必要があります。この関数では、挿入、更新および削除を、表にサブスクライブしたブックマークにのみレポートします。DDLイベントがすべてのブックマークにレポートされます。DDLイベントには、CREATAB、DROPTAB、CREAIND、DROPIND、CREATVIEW、DROPVIEW、CREATSEQ、DROPSEQ、CREATSYN、DROPSYN、ADDCOLS、DRPCOLS、TRUNCATE、SETTBL1およびSETCOL1トランザクションが含まれています。「ttXlaUpdateDesc_t」を参照してください。
この関数の使用については、「更新を監視する表の指定」を参照してください。
ノート:
XLAを介して追跡される表へのDML更新では、ttXlaTableStatusの実行を妨げません。ただし、追跡される表へのDDL更新ではSYS.TABLESがロックされるため、SYS.TABLESに対するシリアライズ可能分離レベルでのttXlaTableStatusの実行が遅延します。
必要な権限
XLA
構文
SQLRETURN ttXlaTableStatus(ttXlaHandle_h handle,
SQLUBIGINT systemTableID,
SQLUBIGINT userTableID,
out SQLINTEGER* oldstatus,
SQLINTEGER* newstatus)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
|
表のシステムID |
|
|
|
表のユーザーID |
|
|
|
XLAの古いステータス:
|
|
|
|
XLAの新しいステータス:
|
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
次の例では、ttXlaTableByNameまたは他のなんらかの方法を使用して、システム表識別子またはユーザー表識別子が検出されていることを想定しています。
この例では、次の宣言を想定しています。
SQLUBIGINT systemTableID; SQLUBIGINT userTableID; SQLINTEGER currentStatus, requestedStatus;
システム表識別子を指定して表のステータスを検出するには、次のコールを実行します。
/* Get system table identifier into systemTableID, then ... */
rc = ttXlaTableStatus(xlahandle, systemTableID, 0,
¤tStatus, NULL);currentStatusの値は、表の更新追跡が有効になっている場合は0(ゼロ)以外になり、そうでない場合は0(ゼロ)になります。
システム表識別子を指定して表の更新追跡を有効にするには、次のように、リクエストするステータスを1に設定します。
requestedStatus = 1;
rc = ttXlaTableStatus(xlahandle, systemTableID, 0,
NULL, &requestedStatus);次の例に示すように、新しい更新追跡ステータスを設定し、1回のコールで現在のステータスを取得できます。
requestedStatus = 1;
rc = ttXlaTableStatus(xlahandle, systemTableID, 0,
¤tStatus, &requestedStatus);前述のコールでは、システム表識別子による表の更新追跡が有効になり、以前の更新追跡ステータスが変数currentStatusに取得されます。
これらのすべての例は、ユーザー表識別子を使用しても実行できます。ユーザー表識別子によって表の更新追跡ステータスを取得するには、次のコールを実行します。
/* Get system table identifier into userTableID, then ... */
rc = ttXlaTableStatus(xlahandle, 0, userTableID,
¤tStatus, NULL);関連項目
ttXlaTableVersionVerify
説明
キャッシュされた表定義が、処理中のXLAレコードと互換性があること確認します。列を追加または削除するためにALTER TABLEを使用する場合のみ表定義が変更されます。
トランザクション・タイプADDCOLSおよびDRPCOLSのXLAレコードのXLAストリームを監視すると、この関数の使用のオーバーヘッドを回避できます。トランザクション・タイプADDCOLSまたはDROPCOLSのXLAレコードが発生した場合は、表および列定義をリフレッシュします。トランザクション・タイプのXLAレコードの監視については、「レコード・ヘッダーの確認および行アドレスの検出」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaTableVersionVerify(ttXlaHandle_h handle
ttXlaTblVerDesc_t* table,
ttXlaUpdateDesc_t* record
out SQLINTEGER* compat)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
キャッシュされた表記述 |
|
|
|
処理されるXLAレコード |
|
|
|
|
互換性情報:
|
結果
キャッシュされた表定義が処理中のXLAレコードと互換性がある場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、表の互換性を確認します。
SQLINTEGER compat;
ttXlaTbVerDesc_t table;
ttXlaUpdateDesc_t* record;
/*
* Get the desired table definitions into the variable "table"
*/
rc = ttXlaTableVersionVerify(xlahandle, &table, record, &compat);
if (compat) {
/*
* Compatible
*/
}
else {
/*
* Not compatible or some other error occurred
* If not compatible, issue a call to ttXlaVersionTableInfo and
* ttXlaVersionColumnInfo to get the new definition.
*/
}ttXlaTimeToODBCCType
説明
TTXLA_TIME値を、アプリケーションで使用可能なODBC C値に変換します。この関数の使用については、「複合データ型の変換」を参照してください。
この関数は、TTXLA_TIME型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaTimeToODBCCType (void* fromData,
out TIME_STRUCT* returnData)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたTIME値へのポインタ |
|
|
|
変換された時間を保持するように割り当てられた記憶域へのポインタ |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、トランザクション・ログ・レコードに返された行からTIME値pColValを取得するために、ttXlaColDesc_t構造体に返されたoffset値を使用していると想定しています。
TIME_STRUCT time; rc = ttXlaTimeToODBCCType(pColVal, &time);
ttXlaTimeStampToODBCCType
説明
TTXLA_TIMSTAMP_TT値を、アプリケーションで使用可能なODBC C値に変換します。この関数の使用については、「複合データ型の変換」を参照してください。
この関数は、TTXLA_TIMSTAMP_TT型の列に対してのみコールします。データ型は、ttXlaGetColumnInfo関数によって返されるttXlaColDesc_t構造体から取得できます。
必要な権限
XLA
構文
SQLRETURN ttXlaTimeStampToODBCCType(void* fromData,
out TIMESTAMP_STRUCT* returnData)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
トランザクション・ログから返されたTIMESTAMP値へのポインタ |
|
|
|
変換されたタイムスタンプを保持するように割り当てられた記憶域へのポインタ |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、トランザクション・ログ・レコードに返された行からTIMESTAMP値pColValを取得するために、ttXlaColDesc_t構造体に返されたoffset値を使用していると想定しています。
TIMESTAMP_STRUCT timestamp; rc = ttXlaTimeStampToODBCCType(pColVal, ×tamp);
ttXlaVersionColumnInfo
説明
変更更新XLAレコードの処理を必要とする表の列に関する情報を取得します。
必要な権限
XLA
構文
SQLRETURN ttXlaVersionColumnInfo(ttXlaHandle_h handle,
ttXlaUpdateDesc_t* record,
out ttXlaColDesc_t* colinfo,
SQLINTEGER maxcols,
out SQLINTEGER* nreturned)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
処理されるXLAレコード |
|
|
|
|
|
|
|
|
表に含めることができる列の最大数 ノート: この表に |
|
|
|
返される列の数 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、次の定義を想定しています。
ttXlaHandle_h xlahandle ttXlaUpdateDesc_t* record; ttXlaColDesc_t colinfo[20]; SQLINTEGER ncols;
次のコールでは、最大20の列の記述が取得されます。
rc = ttXlaVersionColumnInfo(xlahandle, record, colinfo, 20, &ncols);
ttXlaVersionCompare
説明
2つのXLAバージョンを比較して、両バージョンが同じか、どちらのバージョンが古いかを示す結果を返します。
必要な権限
XLA
構文
SQLRETURN ttXlaVersionCompare(ttXlaHandle_h handle,
ttXlaVersion_t* version1,
ttXlaVersion_t* version2,
out SQLINTEGER* comparison)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
|
|
|
|
|
|
|
|
|
比較結果:
|
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
XLAのconfiguredバージョンとactualバージョンを比較するには、次のコールを実行します。
ttXlaVersion_t configured, actual;
SQLINTEGER comparision;
rc = ttXlaGetVersion (xlahandle, &configured, &actual);
rc = ttXlaVersionCompare (xlahandle, &configured, &actual,
&comparison);ノート
XLAベースのレプリケーションで2つのシステムを接続する場合は、次の手順を実行します。
-
プライマリ・サイトで、
ttXlaGetVersionを使用してXLAバージョンを取得します。このバージョン情報をスタンバイ・サイトに送信します。 -
スタンバイ・サイトで、
ttXlaGetVersionを使用してXLAバージョンを取得します。ttXlaVersionCompareを使用して古いバージョンを判別します。2つのサイト間で適切な処理を行うには、古いバージョン番号を使用する必要があります。ttXlaSetVersionを使用してスタンバイ・サイトで使用するインタフェースのバージョンを指定します。古いバージョン番号をプライマリ・サイトに返信します。 -
選択したバージョンがプライマリ・サイトで受信された後、
ttXlaSetVersionを使用して、使用するXLAのバージョンを指定します。
ttXlaVersionTableInfo
説明
処理を必要とする変更更新レコードの表定義を取得します。表記述は、tableinfo出力パラメータに格納されます。
必要な権限
XLA
構文
SQLRETURN ttXlaVersionTableInfo(ttXlaHandle_h handle,
ttXlaUpdateDesc_t* record,
out ttXlaTblVerDesc_t* tblinfo)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
処理されるXLAレコード |
|
|
|
表定義に関する情報 |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、次の定義を想定しています。
ttXlaHandle_h xlahandle; ttXlaUpdateDesc_t* record; ttXlaTblVerDesc_t tabinfo;
次のコールでは、表定義が取得されます。
rc = ttXlaVersionTableInfo(xlahandle, record, &tabinfo);