2.2 問合せ指定

<この節の構成>
(1) 機能
(2) 形式
(3) 共通規則
(4) 指定例

(1) 機能

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

(2) 形式

問合せ指定::=
 SELECT 選択リスト 表式
選択リスト::={*|選択式〔,選択式〕…}
選択式::={値式 〔列名〕|表指定.*|〔表指定.〕ROW}

(a) 選択リスト

選択リスト::={*|選択式〔,選択式〕…}

*
表のすべての列を出力する場合に指定します。
*は,その問合せ指定のFROM句で指定したすべての表のすべての列を,FROM句で指定した表の順序で指定することを意味します。各表中の列の順序は,表定義時に指定した順序とします。
選択式〔,選択式〕…
検索結果として出力する項目を指定します。
(b) 選択式

選択式::={値式 〔列名〕|表指定.*|〔表指定.〕ROW}

値式列名
i番目の選択式の値式に対して列名を指定した場合,問合せ指定によって導出される表のi番目の列の列名は指定した列名となります。
i番目の選択式の値式に対して列名を指定しない場合は,次のようになります。
  • 列指定から導出された値式の場合,その列指定で指定した列名が,問合せ指定によって導出される表のi番目の列の列名となります。
  • 列指定以外から導出された値式の場合,問合せ指定によって導出される表のi番目の列の列名は設定されません(名前のない列となります)。
表指定.*
指定した表のすべての列を表定義時に指定した順序で指定することを意味します。
〔表指定.〕ROW
ROWは行全体を意味します。ROWを指定することで行全体を一つのデータとして一つの領域に取り出します。
  • ROWは,ディクショナリ以外の表に対してだけ指定できます。
  • 取り出されるデータに指定する埋め込み変数は,各列のデータ型に関係なく,ROWに対応する埋め込み変数の構造体を指定できます。ただし,構造体中に境界調整による空きがあってはいけません。また,データ長は行長(各列のデータ長の総和)になります。
  • 選択式中にROWを指定する場合は,その問合せ指定に対する集合関数と同時にROWを指定できません。
  • 埋め込み変数中の時刻印データのデータ長は,秒数の小数点以下のけたをpとした場合,(7+(p÷2))バイトです。また,形式はX'YYYYMMDDhhmmss〔nn…n〕'となります。
(c) 表式

検索の対象となる表を指定します。また,表を検索するときの条件(探索条件)が指定できます。表式については,「2.3 表式」を参照してください。

(3) 共通規則

問合せ指定によって導出される列の数は,3000以下にしてください。

(4) 指定例

問合せ指定の例を次に示します。

SELECT "GNO","GNAME","KIKAKU","TANKA","SURYO" FROM "ZAIKO"
ORDER BY "GNO"

下線部分が問合せ指定の部分です。