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