↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.4 / 7.3
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

pg_execute

pg_execute — 发送一条查询并可选地遍历其结果

大纲

pg_execute ?-array arrayVar? ?-oid oidVar? conn commandString ?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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。