| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
pg_execute 向PostgreSQL後端提交一個命令.
如果該查詢不是一個 SELECT 語句, 那麼執行該查詢並且返回該查詢影響的行數目。 如果該查詢是一個 INSERT 並且插入了一行, 那麼如果我們給出了可選的 -oid 參數, 則插入的元組的 OID 保存在oidVar變量裡。
如果查詢是一個 SELECT 語句,則執行查詢。 對于結果中的每個元組,元組的字段值保存在 arrayVar 變量裡 --- 如果提供了該變量,並且使用字段名作為數組索引, 否則在字段名命名的變量裡,然後執行可選的 procedure --- 如果有的話。 (省略 procedure 可能只有在查詢只返回一個元組的情況下有意義。) 返回選取的元組的數量。
procedure 可以使用 Tcl break,continue,和 return 命令,這些命令的行為和平時一樣。 請注意如果 procedure 執行了 return,pg_execute 並不返回受影響的行數。
pg_execute 是一個新函數,它提供了 pg_select 的特性的一個超集,並且可以在 許多不需要結果句柄的場合替換 pg_exec.
對于服務器錯誤,pg_execute 將拋出一個 Tcl 錯誤並且返回兩個元素列表。第一個元素是一個錯誤代碼, 比如 PGRES_FATAL_ERROR,第二個元素是服務器錯誤文本.對那些更嚴重的錯誤,比如和服務器通訊錯, pg_execute 將拋出一個 Tcl 錯誤並只返回錯誤信息文本。
聲明一個數組變量的名字,結果元組存儲在那裡,並且以字段名為索引。 如果commandString不是一個 SELECT 語句則被忽略。
聲明保存 INSERT 語句生成的 OID 的變量的名字.
執行命令的連接句柄
要執行的 SQL 命令。
可選的為每個 SELECT 語句的每個結果元組執行的命令。
下面的例子裡,為清晰起見,省略了用 catch 進行的錯誤檢查。
插入一行並且在result_oid裡保存 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;"