title: INSERT INTO SELECT vs. INSERT from Cursor in PL/SQL
body: <p>So I have this project I'm working on at work and I've noticed a lot of people using a the INSERT INTO SELECT method:</p>
  
  <pre><code>INSERT INTO candy_tbl (candy_name, 
                         candy_type, 
                         candy_qty) 
  SELECT food_name, 
         food_type, 
         food_qty 
         FROM food_tbl WHERE food_type = 'C';
  </code></pre>
  
  <p>However, I use the following cursor method:</p>
  
  <pre><code>FOR rec IN ( SELECT 
               food_name, 
               food_type, 
               food_qty 
               FROM food_tbl WHERE food_type = 'C') 
  LOOP INSERT INTO candy_tbl(candy_name, 
                             candy_type, 
                             candy_qty) 
                      VALUES(rec.food_name,
                             rec.food_type, 
                             rec.food_qty) 
  END LOOP;
  </code></pre>
  
  <p>This will be going into a PL/SQL package. My question is, which is usually the 'preferred' method and when? I usually choose the cursor method because it gives me a little more flexibility with exception handling. But, I could see how it might be a performance issue when inserting a whole lot of records.</p>