2016-08-05 82 views
0

我遇到了一個問題,我想使用集合將數據從一個表移動到另一個表,並且代碼如下所示。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來處理異常。任何人都可以給我一個例子嗎?

+0

我不知道該循環是什麼。 –

+0

它看起來像是在運行應該填充它的塊之後創建的t2。 –

回答

0

您的CREATE TABLE聲明中的WHERE子句中有WHERE 1 = 2。這將始終作爲錯誤評估,因此您將永遠無法獲得t2中的數據。

相關問題