举个Oracle的bulk collect FETCH into insert的例子
时间: 2023-07-11 20:35:17 浏览: 76
以下是一个Oracle的bulk collect FETCH into insert的例子:
```
DECLARE
TYPE emp_tab_type IS TABLE OF employees%ROWTYPE;
emp_tab emp_tab_type;
cursor emp_cur is
SELECT *
FROM employees
WHERE hire_date > SYSDATE-365;
BEGIN
OPEN emp_cur;
LOOP
FETCH emp_cur
BULK COLLECT INTO emp_tab LIMIT 100;
FORALL i IN emp_tab.FIRST .. emp_tab.LAST
INSERT INTO temp_employees
VALUES emp_tab(i);
EXIT WHEN emp_cur%NOTFOUND;
END LOOP;
CLOSE emp_cur;
END;
```
在这个例子中,我们定义了一个名为emp_cur的游标,用于选择所有入职日期在一年内的员工。接着,我们打开游标并开始一个循环。
在循环中,我们使用FETCH语句从游标中获取100个员工并将它们收集到emp_tab变量中。这就是一个bulk collect FETCH into的例子。
然后,我们使用FORALL语句将emp_tab中的员工插入到temp_employees表中。FORALL语句是一个批量绑定语句,它可以在一个操作中一次性处理多个行。
最后,我们检查游标是否已经到达了最后一行,如果是,则退出循环。最后,我们关闭游标。