2016-08-05 19 views
0

コレクションを使用してあるテーブルから別のテーブルにデータを移動したいという問題が発生しました。plsql:1つのテーブルから別のテーブルにデータを挿入するためにコレクションを使用する

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があります。これは常にfalseと評価されるので、データは決してt2に届きません。

関連する問題