历史版本。 PostgreSQL 7.2 已结束支持。 请参阅 当前版本手册.
第 4 章 pgtcl - Tcl 绑定库
目录
- 4.1. 简介
- 4.2. 把 pgtcl 装载进你的应用程序
- 4.3. pgtcl 命令参考信息
- pg_connect — 打开一个到后端服务器的连接
- pg_disconnect — 关闭一个到后端服务器的连接
- pg_conndefaults — 获取关于默认连接参数的信息
- pg_exec — 向服务器发送一个命令字符串
- pg_result — 获取关于查询结果的信息
- pg_select — 循环遍历 SELECT 语句的结果
- pg_listen — 设置或更改异步 NOTIFY 消息的回调
- pg_lo_creat — 创建一个大对象
- pg_lo_open — 打开一个大对象
- pg_lo_close — 关闭一个大对象
- pg_lo_read — 读取一个大对象
- pg_lo_write — 写入一个大对象
- pg_lo_lseek — 在大对象中定位到某个位置
- pg_lo_tell — 返回大对象的当前寻位位置
- pg_lo_unlink — 删除一个大对象
- pg_lo_import — 从文件导入一个大对象
- pg_lo_export — 把大对象导出到文件
4.1. 简介 #
pgtcl 是一个 Tcl 包,供客户端程序与 PostgreSQL 服务器交互。它使 Tcl 脚本可以使用 libpq 的大部分功能。
本包最初由 Jolly Chen 编写。
表 4.1概述了 pgtcl 中可用的命令。这些命令将在后续页面中进一步描述。
表 4.1. pgtcl 命令
| 命令 | 描述 |
|---|---|
pg_connect | 打开一个到后端服务器的连接 |
pg_disconnect | 关闭一个连接 |
pg_conndefaults | 获取连接选项及其默认值 |
pg_exec | 向后端发送一个查询 |
pg_result | 操作查询的结果 |
pg_select | 循环遍历 SELECT 语句的结果 |
pg_listen | 为 NOTIFY 消息建立回调 |
pg_lo_creat | 创建一个大对象 |
pg_lo_open | 打开一个大对象 |
pg_lo_close | 关闭一个大对象 |
pg_lo_read | 读取一个大对象 |
pg_lo_write | 写入一个大对象 |
pg_lo_lseek | 在大对象中定位到某个位置 |
pg_lo_tell | 返回大对象的当前寻位位置 |
pg_lo_unlink | 删除一个大对象 |
pg_lo_import | 把 Unix 文件导入为大对象 |
pg_lo_export | 把大对象导出到 Unix 文件 |
pg_lo_* 例程是
PostgreSQL 大对象特性的接口。这些函数的设计模仿标准 Unix 文件系统接口中的类似文件系统函数。pg_lo_* 例程应当在
BEGIN/COMMIT 事务块内使用,因为 pg_lo_open 返回的文件描述符只在当前事务内有效。pg_lo_import 和
pg_lo_export 必须在
BEGIN/COMMIT 事务块内使用。
例 4.1展示了一个使用这些例程的小例子。
例 4.1. pgtcl 示例程序
# getDBs :
# get the names of all the databases at a given host and port number
# with the defaults being the localhost and port 5432
# return them in alphabetical order
proc getDBs { {host "localhost"} {port "5432"} } {
# datnames is the list to be result
set conn [pg_connect template1 -host $host -port $port]
set res [pg_exec $conn "SELECT datname FROM pg_database ORDER BY datname"]
set ntups [pg_result $res -numTuples]
for {set i 0} {$i < $ntups} {incr i} {
lappend datnames [pg_result $res -getTuple $i]
}
pg_result $res -clear
pg_disconnect $conn
return $datnames
}