DECLARE 是用于创建游标的实用命令。
DECLARE 命令一直存在于PostgreSQL中。
用法
DECLARE 创建一个关联了查询的游标。可以使用 FETCH 和 MOVE 命令来检索数据和更新游标在查询中的位置。
DECLARE 必须在一个事务中执行。然而,EXPLAIN DECLARE ... 可以在事务外执行。
如果指定了无效的查询,会引发一个 ERROR。
变更历史
- PostgreSQL 8.3
FOR { READ ONLY | UPDATE [ OF ... ] }语法已移除 (提交 6808f1b1)
- PostgreSQL 7.4
DECLARE 在所有PostgreSQL版本中都存在。
示例
DECLARE 的基本用法示例
postgres=# BEGIN;
BEGIN
postgres=*# DECLARE foo_cursor CURSOR
FOR SELECT * FROM foo;
postgres=*# SELECT * FROM pg_cursors\gx
-[ RECORD 1 ]-+------------------------------
name | foo_cursor
statement | DECLARE foo_cursor CURSOR +
| FOR SELECT * FROM foo;
is_holdable | f
is_binary | f
is_scrollable | t
creation_time | 2022-10-25 08:23:26.890898+01
游标只能在事务中声明
postgres=# DECLARE foo_cursor CURSOR
FOR SELECT * FROM foo;
ERROR: DECLARE CURSOR can only be used in transaction blocks
指定的查询必须有效,并且引用可见的对象
postgres=# DECLARE foo_cursor CURSOR
FOR SELECT * FROM bar;
ERROR: relation "bar" does not exist
LINE 2: FOR SELECT * FROM bar;
参考资料
- PostgreSQL文档: DECLARE
