pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_execute [-arrayarrayVar] [-oidoidVar]dbHandlequeryString[queryProcedure]
arrayVar]指定一个数组变量的名称,结果元组以字段名为索引存入其中。 如果 queryString 不是 SELECT 语句, 则忽略此选项。对 SELECT 语句,如果不使用此选项,结果元组的值将 按结果中的字段名存入各个独立的变量。
oidVar]指定一个变量的名称,INSERT 语句的 OID 将存入其中。
dbHandle指定一个有效的数据库句柄。
queryString指定一个有效的 SQL 查询。
queryProcedure]可选的命令,对 SELECT 语句的每个结果元组执行。
ntuples查询影响或返回的元组数。
pg_execute 向 PostgreSQL 后端提交一个查询。
如果查询不是 SELECT 语句,则执行该查询并返回受查询影响的元组数。 如果查询是 INSERT 且只插入了一个元组,则在提供了可选的 -oid 参数时,所插入元组的 OID 会存入 oidVar 变量。
如果查询是 SELECT 语句,则执行该查询。对结果中的每个元组,元组的 字段值(如果提供了 arrayVar,则以字段名为 数组下标存入其中,否则存入以字段名命名的变量),然后如果提供了 可选的 queryProcedure 则执行它。(省略 queryProcedure 大概只在查询将返回单个元组 时才有意义。)返回选中的元组数。
queryProcedure 可以使用 Tcl 的 break、continue 和 return 命令,行为与预期一致。注意,如果 queryProcedure 执行了 return,pg_execute 不会 返回 ntuples。
pg_execute 是一个较新的函数,提供 pg_select 特性的超集,在许多不需要访问结果 句柄的场合可以替代 pg_exec。
对于后端处理的错误,pg_execute 会抛出 Tcl 错误并返回两个元素的列表。第一个元素是诸如 PGRES_FATAL_ERROR 的错误码,第二个元素是后端 的错误文本。对于更严重的错误,例如无法与后端通信, pg_execute 会抛出 Tcl 错误并只返回错误消息 文本。
在下面的例子中,为清晰起见省略了用 catch 做的 错误检查。
插入一行并把 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"
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。