pg_execute [-array arrayVar] [-oid oidVar] dbHandle queryString [queryProcedure]
結果のタプルを格納する配列変数の名前を指定します。インデックスはフィールド名です。queryString が SELECT 文でない場合、この指定は無視されます。SELECT 文の場合でこのオプションを使用しない場合、結果タプルの値は、結果のフィールド名に従って命名された個々の変数に格納されます。
INSERT 文で取得した OID を格納する変数の名前を指定します。
有効なデータベースハンドルを指定します。
有効な SQL 問い合わせを指定します。
SELECT 文の各結果タプルを処理するための、オプションのコマンド。
pg_execute は、問い合わせを PostgreSQL バックエンドに送ります。
問い合わせが SELECT 文ではない場合、問い合わせは実行され、この影響を受けるタプルの数が返されます。INSERT の問い合わせで単一のタプルが挿入される場合、オプションの -oid 引数が指定されていると、挿入されるタプルの OID が oidVar 変数に格納されます。
問い合わせが SELECT 文の場合、問い合わせは実行されます。結果内の各タプルについて、タプルのフィールド値が、フィールド名を配列のインデックスとして arrayVar 変数に格納されます。arrayVar がない場合は、フィールド名に従った名前の変数内に格納されます。その後、オプションの queryProcedure がある場合には、実行されます。(問い合わせが単一のタプルを返す場合にのみ、queryProcedure の省略を検討することをお勧めします)。選択されたタプルの数が返されます。
queryProcedure では、Tcl コマンドの break、continue、および return を通常どおりに使用することができます。ただし、queryProcedure で return、pg_execute を実行しても、ntuples は返されないので注意してください。
pg_execute は新しい関数で、pg_select 機能のスーパーセットを提供するものです。また、結果ハンドルへのアクセスが必要ない多くの場合に pg_exec の代わりに使用することができます。
バックエンド処理のエラーが起こると、pg_execute は Tcl エラーをスローし、 2 つの要素から成るリストを返します。1 つ目の要素は PGRES_FATAL_ERROR などのエラーコードで、2 つ目の要素はバックエンドエラーテキストです。バックエンドとの通信エラーなどのより重大なエラーの場合、pg_execute は Tcl エラーをスローし、エラーメッセージテキストのみを返します。
以下の例では、catch によるエラー検査を省略しています。
行を挿入して、OID を result_oid に保存する。
pg_execute -oid result_oid $pgconn "insert into mytable values (1)"
各行の項目と値のフィールドを表示する。
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"