pg_executeはコマンドをPostgreSQLサーバに送信します。
コマンドがSELECT文以外の場合、コマンドによって影響を受けた行数が返されます。 省略可能な-oid引数が指定された場合、コマンドがINSERT文、かつ、単一行が挿入された時、挿入された行のOIDがoidVar変数に格納されます。
コマンドがSELECT文の場合、その結果の各行に対して、arrayVar変数が指定された時はその変数内に行の値を列名を配列の添字に使用して格納します。 arrayVar変数の指定がない時は、列の名前を変数名とした変数の中に格納します。 その後省略可能なprocedureが指定されていれば、それが実行されます。 (おそらくprocedureの省略は、問い合わせが単一行を返す場合にのみ意味を持ちます。) 選択された行数が返されます。
procedureでは、break、continue、return Tclコマンドを想定したとおりに使用することができます。 procedureがreturnを実行すると、pg_executeは影響を受けた行数を返さなくなることに注意してください。
pg_execute はpg_select機能の上位セットを提供する新しい関数で、結果ハンドルへのアクセスを必要としない多くの場合でpg_execを置き換えることができます。
サーバ側でのエラーでは、pg_execute はTclエラーと2要素からなるリストを返します。 最初の要素はPGRES_FATAL_ERRORといったエラーコードです。 2番目の要素はサーバエラーテキストです。 サーバとの通信に失敗したといった、より深刻なエラーの場合、pg_execute はTclエラーとエラーメッセージテキストのみを返します。
結果の行を格納する、列名を添字とした配列変数の名前を指定します。 commandString が SELECT文以外の場合は無視されます。
INSERT文によってOIDが格納される変数の名前を指定します。
コマンドを実行する接続のハンドルです。
実行するSQLコマンドです。
SELECT文の各結果行に対して実行されるプロシージャで、省略可能です。
以下の例では、簡略化のためにcatchを使用したエラーチェックを省略しています。
1行を挿入し、そのOIDをresult_oidに保存します。
pg_execute -oid result_oid $pgconn "INSERT INTO mytable VALUES (1);"
各行のitem と valueを表示します。
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;"