EssPartitionReadOtlChangeFile

ターゲット・データベース上の変更ファイル(*.CHG)から、変更をメモリーに読み込みます。この関数は、EssPartitionGetOtlChangesを呼び出した後に、EssPartitionApplyOtlChangeRecsを使用して対話的に使用するように設計されています。この関数にはフィルタを使用できます。

構文

            ESS_FUNC_M EssPartitionReadOtlChangeFile (
            hCtx, pSelectMetaRecords, pMetaChangeRead
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

APIコンテキスト・ハンドル。

pSelectMetaRecords

ESS_PARTOTL_SELECT_CHG_T

読み取るレコードの選択条件。

pMetaChangeRead

ESS_PREAD_T

ファイルから読み取られたメタ変更レコードへのポインタ。

備考

このルーチンではpMetaChangeReadに時刻が戻されます。ターゲット・データベースのタイム・スタンプを更新するためにEssPartitionApplyOtlChangeRecsに渡すタイム・スタンプと同じです。また、適用されたレコードをパージするために使用するEssPartitionPurgeOtlChangeFileのタイム・スタンプとも同じです。

戻り値

正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。

アクセス

この関数を呼び出すには、データベース・デザイナのアクセス権限が必要です。

         ESS_FUNC_M ESS_PartitionReadOtlChangeFile(ESS_HCTX_T hCtx, ESS_HINST_T hInst)
{
   ESS_FUNC_M          sts;
   ESS_STR_T          chgfilename;
   ESS_TIME_T         time;
   ESS_PARTOTL_CHANGE_API_T   OtlChg;
   ESS_ULONG_T        uldimfilter=0,ulmbrfilter=0,ulmbrattrfilter=0;
   ESS_PARTOTL_SELECT_CHG_T SelectMetaRecords;
   ESS_PARTOTL_READ_T          MetaChangeRead;
   
   memset(&OtlChg, 0, sizeof(ESS_PARTOTL_CHANGE_API_T));
   memset(&SelectMetaRecords, 0, sizeof(ESS_PARTOTL_SELECT_CHG_T));
   memset(&MetaChangeRead, 0, sizeof(ESS_PARTOTL_READ_T));
   
   chgfilename = "d:\\essbase5\\app\\app1\\trg1\\ess00001.chg";
   time = 0;
   
   uldimfilter     = ESS_DIMCHG_ALL;
   ulmbrfilter     = ESS_PARTITION_OTLMBR_ALL;
   ulmbrattrfilter = ESS_PARTITION_OTLMBRATTR_ALL;
   SelectMetaRecords.pszFileName             = chgfilename;
   SelectMetaRecords.QueryFilter.TimeStamp   = time;
   SelectMetaRecords.QueryFilter.ulDimFilter = uldimfilter;
   SelectMetaRecords.QueryFilter.ulMbrFilter = ulmbrfilter;
   SelectMetaRecords.QueryFilter.ulMbrAttrFilter = ulmbrattrfilter;
 
   MetaChangeRead.pOtlChg = &OtlChg;
   sts = EssPartitionReadOtlChangeFile (hCtx, &SelectMetaRecords, &MetaChangeRead);
   printf("EssPartitionReadOtlChangeFile   sts:  %ld\n",sts);
   sts = EssPartitionFreeOtlChanges(hCtx);
   printf("\tEssPartitionFreeOtlChanges   sts:  %ld\n",sts);
  
   return(sts);
}
      

関連トピック