pg_execute

Name

pg_execute -- 發送一個查詢並且在接過上執行可選的循環

Synopsis

pg_execute [-array arrayVar] [-oid oidVar] conn commandString [procedure]

描述

pg_executePostgreSQL後端提交一個命令.

如果該查詢不是一個 SELECT 語句, 那麼執行該查詢並且返回該查詢影響的行數目。 如果該查詢是一個 INSERT 並且插入了一行, 那麼如果我們給出了可選的 -oid 參數, 則插入的元組的 OID 保存在oidVar變量裡。

如果查詢是一個 SELECT 語句,則執行查詢。 對于結果中的每個元組,元組的字段值保存在 arrayVar 變量裡 --- 如果提供了該變量,並且使用字段名作為數組索引, 否則在字段名命名的變量裡,然後執行可選的 procedure --- 如果有的話。 (省略 procedure 可能只有在查詢只返回一個元組的情況下有意義。) 返回選取的元組的數量。

procedure 可以使用 Tcl breakcontinue,和 return 命令,這些命令的行為和平時一樣。 請注意如果 procedure 執行了 returnpg_execute 並不返回受影響的行數。

pg_execute 是一個新函數,它提供了 pg_select 的特性的一個超集,並且可以在 許多不需要結果句柄的場合替換 pg_exec

對于服務器錯誤,pg_execute 將拋出一個 Tcl 錯誤並且返回兩個元素列表。第一個元素是一個錯誤代碼, 比如 PGRES_FATAL_ERROR,第二個元素是服務器錯誤文本.對那些更嚴重的錯誤,比如和服務器通訊錯, pg_execute 將拋出一個 Tcl 錯誤並只返回錯誤信息文本。

參數

-array arrayVar

聲明一個數組變量的名字,結果元組存儲在那裡,並且以字段名為索引。 如果commandString不是一個 SELECT 語句則被忽略。

-oid oidVar

聲明保存 INSERT 語句生成的 OID 的變量的名字.

conn

執行命令的連接句柄

commandString

要執行的 SQL 命令。

procedure

可選的為每個 SELECT 語句的每個結果元組執行的命令。

返回值

查詢影響的元組數量或者返回的元組數量。

例子

下面的例子裡,為清晰起見,省略了用 catch 進行的錯誤檢查。

插入一行並且在result_oid裡保存 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;"