概述
PostgreSQL游标可以封装查询并对其中每一行记录进行单独处理。当我们想对大量结果集进行分批处理时可以使用游标,因为一次性处理可能造成内存溢出。
另外我们可以定义函数返回游标类型变量,这是函数返回大数据集的有效方式,函数调用者根据返回游标对结果进行处理。
下图展示了如何使用PostgreSQL游标:
- 第一步声明游标.
- 接着打开游标.
- 然后从结果中取出行至目标变量中.
- 之后,检查是否有更多的行可以继续取。如何有返回第三步,否则至第五步.
- 最后,关闭游标.
下面章节我们会详细说明每一步。
声明游标
为了访问游标,需要在声明块中声明游标变量。PostgreSQL提供了特定类型REFCURSOR 用于声明游标变量。下面示例声明非绑定游标:
DECLARE
my_cursor REFCURSOR;
另一种方式声明绑定游标变量,及声明时绑定查询语句,语法如下:
cursor_name [ [NO] SCROLL ] CURSOR [( name datatype, name data type, ...)] FOR query;
首先,指定游标变量名称。接着,使用SCROLL指定游标是否可以回滚。如果使用 NO SCROLL,游标不能回滚。然后是CURSOR关键字&#