2.1 カーソル指定

<この節の構成>
(1) 機能
(2) 形式
(3) 注意事項
(4) 指定例

(1) 機能

一つ以上の表からのデータの検索,検索結果の並べ替え(ソート)をするために指定します。カーソル指定は,カーソル宣言およびSELECT文中に指定します。

(2) 形式

カーソル指定::=問合せ式 〔ORDER BY句〕 〔LIMIT句〕
ORDER BY句::=ORDER BY 列指定 〔{ASC|DESC}〕〔,列指定 〔{ASC|DESC}〕〕…
LIMIT句::=LIMIT リミット行数
リミット行数::={整数定数|:埋め込み変数}

(a) 問合せ式

検索条件(表式)と検索した結果を出力する項目(選択式)を指定すると,検索結果を格納した仮想的な表が生成されます。この表を導出表といいます。導出表は,選択式で指定した列で構成されます。

なお,XDBでは,問合せ式は問合せ指定と等しくなります。問合せ指定については,「2.2 問合せ指定」を参照してください。

(b) ORDER BY句

問合せ式での検索結果を,昇順または降順に並べ替える場合のソートの方法を指定します。

ORDER BY句を省略した場合,導出表中の行の並びは保証されません。

ORDER BY句についての規則を次に示します。

  1. ソートキーに指定する列の数は,16以下にしてください。
  2. 同じ列は2回以上指定できません。
  3. 問合せ式で導出される表に重複する列名があるときは,その列名をソートキーに指定できません。
  4. ソートキー中に指定した導出列名は,単一の列指定だけから導出されている場合,その列指定によって置き換えられます。
  5. ソートキーに列指定を指定した場合,列指定が参照する列を参照します。
列指定
ソートキーにする列を指定します。
列指定についての規則を次に示します。
  • ソートキーに検索結果として出力する項目(選択式で指定されている項目)以外のものを指定する場合は,選択式中に集合関数を指定できません。
  • 次のデータ型の列は指定できません。
    ・定義長が4037バイト以上のCHAR型
    ・ROWID型
ASC|DESC}
ASC
検索結果を昇順に並べ替える場合に指定します。
DESC
検索結果を降順に並べ替える場合に指定します。
(c) LIMIT句

問合せ式の検索結果のうち,取得する行数を指定します。

LIMIT リミット行数
問合せ式の検索結果から取得する行数を指定します。

LIMIT句についての規則を次に示します。

  1. リミット行数のデータ型には整数(INTEGER型)を指定してください。指定の範囲は0~2147483647です。
  2. リミット行数にナル値は指定できません。
  3. リミット行数に埋め込み変数を指定した場合,埋め込み変数のデータ型には,INTEGER型が仮定されます。
  4. リミット行数の指定がある場合,検索結果行数は次のようになります。
    MIN(問合せ式の検索結果行数,リミット行数)
  5. 問合せ式の検索結果がリミット行数を超える場合,次のときには検索結果が一意に定まりません。
    • リミット行数で指定した最終行と同じソートキーの値を持つ行が複数存在する
    • ソートキーの指定がない
    検索結果が一意に定まらない場合の例を次に示します。
    (例)
    次のSQLを使用して表ZAIKOを検索した場合,ソートキーとなる列TANKAに,3番目に小さい値である'3640'を持つ行が複数あるため,検索結果が結果1となるか,結果2となるかは不定となります。

       SELECT * FROM "ZAIKO" ORDER BY "TANKA" LIMIT 3

    図2-1 LIMIT句の指定によって,検索結果が不定となる例

    [図データ]

(3) 注意事項

ORDER BY句を指定すると,作業表を作成することがあります。

(4) 指定例

(例1)
SELECT文中にORDER BY句を指定した例を次に示します。

SELECT "SNAME" FROM "ZAIKO" ORDER BY "SNAME" ASC

下線部分がORDER BY句の部分です。
(例2)
SELECT文中にLIMIT句を指定した例を次に示します。

SELECT "SCODE","ZSURYO" FROM "ZAIKO"
WHERE "ZSURYO">20 ORDER BY "ZSURYO","SCODE"
LIMIT 10

下線部分がLIMIT句の部分です。