pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_execute ?-arrayarrayVar? ?-oidoidVar?conncommandString?procedure?
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 错误并只 返回错误消息文本。
-array arrayVar指定一个数组变量的名称,结果行将被 存入其中,以列名作为索引。如果 commandString 不是 SELECT 语句,则忽略此参数。
-oid oidVar指定一个变量的名称,INSERT 语句产生的 OID 将被存入该变量。
conn要在其上执行命令的连接的句柄。
commandString要执行的 SQL 命令。
procedure可选的过程,为 SELECT 语句的每个结果行执行。
被该命令影响或返回的行数。
在下面的例子中,为了清晰起见,省略了用 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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。