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

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

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

pg_execute

pg_execute — 发送查询并可选地循环遍历结果

大纲

pg_execute [-array arrayVar] [-oid oidVar] dbHandle queryString [queryProcedure]

输入

[-array arrayVar]

指定一个数组变量的名称,结果元组以字段名为索引存入其中。 如果 queryString 不是 SELECT 语句, 则忽略此选项。对 SELECT 语句,如果不使用此选项,结果元组的值将 按结果中的字段名存入各个独立的变量。

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