簡體   English   中英

Oracle大容量收集腳本以插入數據

[英]Oracle Bulk Collection Script to Insert Data

我有以下腳本

DECLARE

CURSOR cursor1 IS
    SELECT *
    FROM table1;

TYPE cursor_aat IS TABLE OF cursor1%ROWTYPE;        

l_cursor cursor_aat;

BEGIN        
    OPEN cursor1;

    LOOP

        FETCH cursor1
        BULK COLLECT INTO l_cursor LIMIT 200;

        FOR INDX IN 1 .. l_cursor.COUNT LOOP            
            INSERT INTO new_table
            (col1, col2)
            values
            (l_cursor(INDX).col1, l_cursor(INDX).col2);

        END LOOP;

        EXIT WHEN l_cursor.COUNT < 200;
    END LOOP;

END;

但它抱怨無法識別l_cursor(INDX).col1 我在這里做錯了什么?

為什么首先使用該循環? 它會減慢速度,並在服務器上造成不必要的資源消耗。

整個PL / SQL腳本可以用一個語句替換:

INSERT INTO new_table
(col1, col2)
SELECT col1, col2
FROM table1;

要僅從table1復制200行,請使用以下命令:

INSERT INTO new_table
(col1, col2)
SELECT col1, col2
FROM table1
WHERE rownum < 200;

注意,這不能保證復制哪些行,因為SELECT語句可以按任何順序返回行。 如果要200條特定的行,則需要按以下順序應用訂單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM