Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

第2部 APIでのアプリケーション開発> 第11章 C APIのアプリケーション開発> 11.2 C APIの使用方法> 11.2.2 データの検索

11.2.2.6 データをソートして取得する

検索した結果をある特定の要素をキーとしてソートして取得したい場合があります。

データの部分情報をソートして取得するには、ShunSearch関数にソート式を指定して実行します。

データをソートして取得する場合の流れについて、以下の図に示します。

[図:データをソートして取得する場合の流れ]

■記述例

SHUNHSTMT StmtH;
/* データ操作ハンドルの割当て */
ShunAllocHandle(ConH, &StmtH);                                (1)

/* ソート式を指定して検索を実行 */
ShunSearch(StmtH, 1, NULL, 0, 30,
           "/document/base/prefecture == '大阪'", 
           "/document/base/name, /document/base/price",
           "/document/base/price/text() DESC",
           &Hit_Cnt, &Return_Cnt, &Returnable_Cnt,
           &Rec_Id_Out, &Data,
           &First_Pos, &Last_Pos);                            (2)

/* 検索した結果の取出し */
printf("ヒット件数              = %d\n", Hit_Cnt);             (3)
if(Hit_Cnt > 0) {
  for (i = 0; i < Return_Cnt; i++) {
    printf("[結果]%d件目 = %s\n", i+1, Data[i].Data);
  }
}

/* データ操作ハンドルの解放 */
ShunFreeHandle(StmtH);                                        (4)

◆(1) データ操作ハンドルの割当て

事前にデータ操作ハンドルを割り当てます。データ操作ハンドルは、ShunAllocHandle関数に、親ハンドルとなるコネクションハンドルを指定して割り当てます。

◆(2) 検索の実行

ShunSearch関数のパラメタに、データ操作ハンドル、データの取得位置(取得開始位置または取得終了位置)、データの最大件数、検索式およびリターン式を指定して検索を実行します。

ShunSearch関数にソート式を指定した場合、検索条件に一致したすべてのXML文書を参照してソート処理を行います。検索式には、結果件数が適正な値となるような条件を指定し、ソート対象のデータを絞ることが応答性能をよくするポイントです。ソートを実施する前に検索条件に一致したXML文書の件数を調べるには、ShunGetHitCount関数を利用します。

ソート式に指定したキーの長さによって返却できる件数が決まります。最大件数は1000件です。データの取得位置やデータの最大件数に返却可能な最大件数を超える値を指定しても、それ以上のデータは返却することができません。
返却可能なデータの最大件数は、ShunSearch関数の出力パラメタに返却されます。キーの長さと返却可能なデータ件数の目安については、“付録C 定量値”を参照してください。

データの取得位置を指定することにより、続きのデータを取り出すことができます。これにより1000件以上のデータを取り出すことができます。詳細については、“11.2.2.7 条件に一致するXML文書を連続して取得する”を参照してください。

◆(3) 検索した結果の取出し

ShunSearch関数では、検索した結果のアドレスを返却します。

検索した結果は、構造体の配列で構成されていますので、これをもとにデータを取り出します。

ShunSearch関数では、検索結果とともにXML文書を一意に識別するレコードID(コンダクタ制御情報および返信レコード識別子)を返却します。レコードIDは、対応するXML文書の全体を取り出したり、削除、更新する場合に利用します。

◆(4) データ操作ハンドルの解放

データの検索および結果の取出しが完了したら、ShunFreeHandle関数でデータ操作ハンドルを解放します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006