[英]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.