plsql:使用collection将数据从一个表插入另一个表

时间:2016-08-05 18:01:01

标签: plsql

我遇到一个问题,我想使用集合将数据从一个表移动到另一个表,代码在下面。

DECLARE
    CURSOR c IS SELECT first_name, last_name, salary FROM hr.employees; 
    TYPE l_data IS RECORD(fname VARCHAR2(25), lname VARCHAR2(25), salary NUMBER(9));
    TYPE t_nt IS TABLE OF l_data;
    v_lookup t_nt:=t_nt();
    v_increment number:=1;
    i NUMBER(2);
BEGIN
open c;
loop
fetch c BULK COLLECT INTO v_lookup;

FORALL i IN 1..v_lookup.COUNT
INSERT INTO t2 VALUES v_lookup(i);
EXIT WHEN c%NOTFOUND;
commit;
END LOOP;
close c;
 END;

CREATE TABLE t2 AS SELECT first_name, last_name, salary FROM hr.employees WHERE 1 = 2;

select * from t2;

之后,当我从t2中选择*时,它什么也没有显示。 所以我不知道会发生什么。 最后,我如何使用buck_exception来处理异常。有人可以给我看一个例子吗?

1 个答案:

答案 0 :(得分:0)

WHERE 1 = 2语句中的WHERE子句中有CREATE TABLE。这将始终评估为false,因此您永远不会在t2中获取数据。