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