Oracle pl sql 初学笔记(二)–游标
PL sql 里有两种游标,一种是普通的静态游标和sql 标准的游标一样,一种是动态游标sys_refcursor。静态游标必须在编译时确定查询语句,而动态游标可以在运行时才确定查询语句,而且可以修改对应的查询语句。
两种游标的定义如下,其中c是静态游标,rc 动态游标:
DECLARE
CURSOR c
IS
SELECT employee_id FROM employee;
rc SYS_REFCURSOR;
var va;
l_employee_id employees.employee_id%TYPE;
BEGIN
OPEN c;
FETCH c BULK COLLECT INTO var;
CLOSE c;
-- 静态游标结束,下面的是动态游标
OPEN rc FOR SELECT COLUMN_VALUE FROM TABLE (var);
LOOP
FETCH
rc
INTO
l_employee_id;
EXIT
WHEN rc%notfound;
dbms_output.put_line(l_employee_id);
END LOOP;
CLOSE rc;
END;
上面的代码还演示了如何将一个静态游标的查询结果赋值给一个动态游标。两种游标的使用步骤都是open,loop,fetch,close。