ページのトップに戻る
Symfoware Server SQLビギナーズガイド

2.1.1 複数の列の値を取り出す

2.1 列の値をそのまま取り出す”で最初に示した例では、データを取り出す列は“在庫数量”だけでした。データを取り出したい列が、“在庫数量”と“倉庫番号”の2つになったとします。それには単一行SELECT文を2回実行すればよいことはすぐに分かります。しかし、これではデータを取り出したい列の数が多くなると効率が悪くなります。単一行SELECT文では、一度に複数の列の値を取り出すことができます。

複数の列のデータを取り出すには、選択リストに必要な数の列名をコンマ(,)で区切って指定します。取り出したデータを格納するホスト変数も、同じ数だけ指定します。取り出した列のデータは、左から数えて同じ順番のホスト変数に格納されます。

単一行SELECT文に複数の列を指定した例を以下に示します。

1

在庫表から、製品番号が“215”の製品の在庫数量と倉庫番号を求めます。求めた在庫数量はホスト変数“STOCKQTY”に、倉庫番号はホスト変数“WHCODE”に格納します。

図2.1 単一行SELECT文に複数の列を指定した例

表に含まれるすべての列を定義された順に指定する場合は、列名の代わりにアスタリスク(*)を指定することができます。アスタリスクを指定した例を以下に示します。

2

“*”の指定の例です。在庫表からすべての列のデータを取り出します。

SELECT * INTO :ITMNO, :PRODUCT, :STOCKQTY, :WHCODE

         FROM 在庫管理.在庫表 WHERE 製品番号 = 215

例2は、データを取り出す列に、製品番号、製品名、在庫数量、および倉庫番号の4つの列を指定したのと同じです。したがって、取り出した列のデータを格納するホスト変数は4つ指定することが必要です。

なお、列名の代わりにアスタリスクを指定すると、表の設計変更により列が追加されたり、列の定義順序が変更されたときに、アプリケーションの修正が必要になります。アプリケーションにこのような影響を与えないためには、すべての列をコンマ(,)で区切って指定するようにしてください。