【发布时间】:2017-07-11 14:14:29
【问题描述】:
我是 PL/SQL 的新手。
我决定使用以下 SQL 向表中插入数千条记录。但是,将 FORALL 语句放在 for 循环之外是否正确?
将 FORALL 语句移到 for 循环块中会更好吗?谢谢。
DECLARE
CURSOR books_cur
IS
SELECT book_id, book_type
FROM books
WHERE book_category = 'PROGRAMMING';
TYPE book_ids_t IS TABLE OF
books.book_id%TYPE;
l_book_ids book_ids_t := book_ids_t();
BEGIN
FOR i IN books_cur LOOP
IF(i.book_type = 'PLSQL') THEN
l_book_ids.EXTENDS;
l_book_ids(l_book_ids.LAST) := i.book_id;
END IF;
END LOOP;
FORALL i IN l_book_ids.FIRST..l_book_ids.LAST
INSERT INTO table_a (book_id) VALUES l_book_ids(i);
END;
【问题讨论】:
-
顺便说一句,
if条件周围不需要括号。它们不会破坏任何东西,但它们很混乱,编译器会忽略它们。
标签: sql oracle plsql oracle11g