pg_execute

名前

pg_execute -- 問い合わせを送信し、オプションでその結果を繰り返し処理します。

概要

pg_execute ?-array arrayVar? ?-oid oidVar? conn commandString ?procedure?

説明

pg_executeはコマンドをPostgreSQLサーバに送信します。

コマンドがSELECT文以外の場合、コマンドによって影響を受けた行数が返されます。 省略可能な-oid引数が指定された場合、コマンドがINSERT文、かつ、単一行が挿入された時、挿入された行のOIDがoidVar変数に格納されます。

コマンドがSELECT文の場合、その結果の各行に対して、arrayVar変数が指定された時はその変数内に行の値を列名を配列の添字に使用して格納します。 arrayVar変数の指定がない時は、列の名前を変数名とした変数の中に格納します。 その後省略可能なprocedureが指定されていれば、それが実行されます。 (おそらくprocedureの省略は、問い合わせが単一行を返す場合にのみ意味を持ちます。) 選択された行数が返されます。

procedureでは、breakcontinuereturn Tclコマンドを想定したとおりに使用することができます。 procedurereturnを実行すると、pg_executeは影響を受けた行数を返さなくなることに注意してください。

pg_executepg_select機能の上位セットを提供する新しい関数で、結果ハンドルへのアクセスを必要としない多くの場合でpg_execを置き換えることができます。

サーバ側でのエラーでは、pg_execute はTclエラーと2要素からなるリストを返します。 最初の要素はPGRES_FATAL_ERRORといったエラーコードです。 2番目の要素はサーバエラーテキストです。 サーバとの通信に失敗したといった、より深刻なエラーの場合、pg_execute はTclエラーとエラーメッセージテキストのみを返します。

引数

-array arrayVar

結果の行を格納する、列名を添字とした配列変数の名前を指定します。 commandStringSELECT文以外の場合は無視されます。

-oid oidVar

INSERT文によってOIDが格納される変数の名前を指定します。

conn

コマンドを実行する接続のハンドルです。

commandString

実行するSQLコマンドです。

procedure

SELECT文の各結果行に対して実行されるプロシージャで、省略可能です。

戻り値

コマンドによって影響を受けた、もしくは、返された行数です。

以下の例では、簡略化のためにcatchを使用したエラーチェックを省略しています。

1行を挿入し、そのOIDをresult_oidに保存します。

pg_execute -oid result_oid $pgconn "INSERT INTO mytable VALUES (1);"

各行のitemvalueを表示します。

pg_execute -array d $pgconn "SELECT item, value FROM mytable;" {
    puts "Item=$d(item) Value=$d(value)"
}

最大値、最小値を見つけ、$s(max)$s(min)に格納します。

pg_execute -array s $pgconn "SELECT max(value) AS max, min(value) AS min FROM mytable;"

最大値、最小値を見つけ、$max$minに格納します。

pg_execute $pgconn "SELECT max(value) AS max, min(value) AS min FROM mytable;"