↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.4 / 7.3
历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.

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"

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.