pg_select

Name

pg_select -- SELECT文の結果を繰り返し処理します。

Synopsis

pg_select dbHandle queryString arrayVar queryProcedure

入力

dbHandle

有効なデータベースハンドルを指定します。

queryString

有効な SQL select 問い合わせを指定します。

arrayVar

返されるタプル用の配列変数です。

queryProcedure

タプルが見つかるたびに実行されるプロシージャです。

出力

なし

説明

pg_select は、SELECT 問い合わせを PostgreSQL バックエンドに送り、その結果内の各タプルについて指定されたコード群を実行します。 queryString は SELECT 文でなければいけません。 他の問い合わせはエラーを返します。 変数 arrayVar は、ループ内で使用される配列名です。 各タプルについて arrayVar にはそのタプルのフィールド値がフィールド名でインデックスされた形で格納されます。 そして、queryProcedure が実行されます。

フィールド値以外に、以下の特殊な項目が配列として作成されます。

.headers

SELECT で返される列名のリストです。

.numcols

SELECT で返される列数です。

.tupno

現在のタプル番号です。 これはゼロから始まり、ループ本体を繰返す毎に 1 足されます。

使用方法

下はtableテーブルが controlname という名前のフィールド(と、その他のフィールド)を持つ場合にうまく実行できます。

	pg_select $pgconn "SELECT * FROM table" array {
		puts [format "%5d %s" $array(control) $array(name)]
	}