我正在尝试学习使用PostgreSQL的基本光标。这是我的脚本:
DECLARE cur_employees CURSOR FOR
SELECT *
FROM employee
CLOSE cur_employees
我想遍历这个列表并输出其中处于激活状态的元素。我应该从哪里开始?
我正在尝试学习使用PostgreSQL的基本光标。这是我的脚本:
DECLARE cur_employees CURSOR FOR
SELECT *
FROM employee
CLOSE cur_employees
我想遍历这个列表并输出其中处于激活状态的元素。我应该从哪里开始?
在PostgreSQL中,即使在使用plpgsql处理查询结果时,通常也很少需要显式地使用游标。这与许多其他SQL数据库形成了鲜明的对比,那里几乎总是使用游标。
在plpgsql中,你可以简单地编写如下代码:
DECLARE
emp employee%rowtype;
BEGIN
FOR emp IN SELECT * FROM employee LOOP
IF emp.active THEN
RAISE INFO 'Active: %', emp.employee_id
END IF;
END LOOP;
END
在上述代码中,plpgsql语言处理程序负责打开、绑定、获取和关闭自身(更多关于声明和控制结构的内容)。DECLARE cur_employees CURSOR FOR SELECT * FROM employee;
FETCH NEXT FROM cur_employees;
// etc..
CLOSE cur_employees;
这可以用来仔细地获取查询结果集的一部分。然而,使用这些是不寻常的,因为通常您的客户端驱动程序会提供某种功能来实现这一点(例如,在JDBC中可滚动的结果集)。您还可以从类似于Oracle的函数中返回游标,尽管这也是一个相对罕见的用例。
OPEN
命令,因为这个操作在DECLARE
语句中已经隐式完成了。 - A.H.