| PostgreSQL | ||
|---|---|---|
| 上一页 | 下一页 | |
DECLARE — 为访问表定义一个游标
DECLARE cursorname [ BINARY ] [ INSENSITIVE ] [ SCROLL ]
CURSOR FOR query
[ FOR { READ ONLY | UPDATE [ OF column [, ...] ] ]
DECLARE 允许用户创建游标,用于在一个大的查询里面检索少数几行数据.使用 FETCH,游标可以既可以返回文本也可以返回二进制格式。
通常游标返回文本格式,要么是 ASCII 要么是某种由 Postgres 特定的后端决定的编码方式.因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式.另外,文本格式一般都比对应的二进制格式占的存储空间大.一旦格式转换回文本,客户应用需要将文本转换为二进制格式来操作.BINARY 游标给你返回内部二进制形态的数据。
作为例子,如果查询从一个整数列返回一个一,在通常的游标里你将获得一个字符串'1'而如果是一个二进制查询,你将得到一个4-字节的等于ctrl-A('^A')的数值.
BINARY 游标应该小心使用.一些用户应用如 psql 是不识别二进制游标的,而且期望返回的数据是文本格式.
然而,字符串表示方式是与硬件体系无关的,而二进制格式会因不同的硬件体系不同而不同,而且 Postgres 对二进制游标不做字节续解析或者其他格式转换。因此,如果你的客户机和服务器使用不同的格式(如: "高位高字节" 和 "底位底字节").你可能就不会希望你的数据以二进制格式返回.所以二进制游标将比文本略微快一点,因为二进制在服务器和客户端的数据传输中有较少的转换.
小技巧: 如果你希望用 ASCII 显示数据,将数据以 ASCII 模式访问将节省客户端的工作.
游标只能在事务中使用.使用 BEGIN,COMMIT 和 ROLLBACK 定义一个事务块。
在 SQL92 中游标只能在嵌入 SQL (ESQL)的应用中使用.Postgres 没有一个显式的 OPEN cursor 语句;一个游标被认为在定义时就已经打开了.不过,ecpg, Postgres 嵌入的 SQL 预编译器,支持 SQL92 习惯,包括那些和 DECLARE 和 OPEN 相关的语句.
定义一个游标:
DECLARE liahona CURSOR
FOR SELECT * FROM films;
| 上一页 | 首页 | 下一页 |
| CREATE VIEW | 开头 | DELETE |