DECLARE cursorname [ BINARY ] [ INSENSITIVE ] [ SCROLL ] CURSOR FOR query [ FOR { READ ONLY | UPDATE [ OF column [, ...] ] ]
将在随后 FETCH 操作中使用的游标名.
令游标以二进制而不是文本格式获取数据.
SQL92 SQL92 关键字, 表明从游标检索出来的数据不应该被其他进程或游标的更新动作影响. 因为在 Postgres 里,游标的操作总是发生在事务 里,所以总是符合上面描述.这个关键字没有作用.
SQL92 关键字,表明每个 FETCH 操作可以检索出多行数据. 因为在Postgres 在任何情况下都允许这样, 所以这个关键字没有作用.
一个 SQL 查询,它提供由游标控制的行. 请参考 SELECT 语句获取有关有效参数的详细信息.
SQL92 关键字,表明游标将用于只读模式. 因为这是 Postgres 唯一的游标访问模式, 所以该关键字没有作用.
SQL92 关键字,表明游标将被用于更新表. 因为游标更新目前还不被 Postgres 支持, 所以这个关键字将产生一个错误信息.
将被更新的列.因为游标更新目前不被 Postgres 支持, 所以 UPDATE 子句将产生一个错误信息.
DECLARE 允许用户创建游标, 用于在一个大的查询里面检索少数几行数据. 使用 FETCH. ,游标可以既可以返回文本也可以返回二进制格式。
通常游标返回文本格式,要么是 ASCII 要么是某种由 Postgres 特定的后端决定的编码方式. 因为数据在系统内部是用二进制格式存储的, 系统必须对数据做一定转换以生成文本格式. 另外,文本格式一般都比对应的二进制格式占的存储空间大. 一旦格式转换回文本,客户应用需要将文本转换为二进制格式来操作. BINARY 游标给你返回内部二进制形态的数据。
作为例子,如果查询从一个整数列返回一个一, 在通常的游标里你将获得一个字符串'1'而如果是一个二进制查询, 你将得到一个 4-字节的等于ctrl-A('^A')的数值.
游标应该小心使用 BINARY. 一些用户应用如 psql 是不识别二进制游标的, 而且期望返回的数据是文本格式.
而且,字符串表示方式是与硬件体系无关的, 而二进制格式会因不同的硬件体系不同而不同,而且 Postgres 对二进制游标不做字节序解析或者其他格式转换 。 因此,如果你的客户机和服务器使用不同的格式 (如: "高位高字节" 和 "底位底字节").你可能就不会希望你的数据 以二进制格式返回.所以二进制游标将比文本略微快一点, 因为二进制在服务器和客户端的数据传输中有较少的转换.
小技巧: 如果你希望用 ASCII 显示数据, 将数据以 ASCII 模式访问将节省客户端的工作.