私はPL/SQLを初めて使用しています。
次のSQLを使用して、何千ものレコードをテーブルに挿入することに決めました。しかし、FORALL文をforループの外側に置くのは正しいですか?
forループブロック内でFORALL文を移動する方が良いですか?ありがとうございました。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;
btw 'if'条件の括弧の必要はありません。彼らは何かを壊すことはありませんが、混乱し、コンパイラはそれらを無視します。 –