【发布时间】:2016-11-27 07:14:42
【问题描述】:
SET SERVEROUTPUT ON
DECLARE
TYPE t_bulk_collect_test_tab IS TABLE OF bulk_collect_test%ROWTYPE;
CURSOR C1 IS SELECT * FROM bulk_collect_test;
l_tab t_bulk_collect_test_tab := t_bulk_collect_test_tab();
l_start NUMBER;
BEGIN
OPEN C1;
FETCH C1 BULK COLLECT INTO t_bulk_collect_test_tab;
CLOSE C1;
END;
问题是当我们打开游标时,所有的数据都是从数据库中取出到plsql内存中的。在 FETCH 操作之前,数据存在于
PLSQL 内存,所以上下文切换没有问题。这种fetch操作有什么用吗?
【问题讨论】:
-
不,打开游标不会从表中读取任何数据。通过 fetch 读取数据。
-
@WernfriedDomscheit open 语句有什么作用?
-
OPEN 解析语句,创建执行计划并锁定记录(如果由'FOR UPDATE'指定)
标签: sql oracle performance plsql