1. 程式人生 > >oracle:IF語句 Loop迴圈 Cursor的用法(一)

oracle:IF語句 Loop迴圈 Cursor的用法(一)

程式程式碼
Load Airplane Parts    BEGIN
  Insert INTO parts VALUES ('737', 'Even', 'Wing', 2);
  Insert INTO parts VALUES ('747', 'Even', 'Wing', 2);
  Insert INTO parts VALUES ('757', 'Even', 'Wing', 2);
  Insert INTO parts VALUES ('767', 'EVen', 'Wing', 2);
  Insert INTO parts VALUES ('777', 'even', 'Wing', 2);
  Insert INTO parts VALUES ('737', 'ODD', 'Wing', 2);
  Insert INTO parts VALUES ('747', 'odd', 'Wing', 2);
  Insert INTO parts VALUES ('757', 'Odd', 'Wing', 2);
  Insert INTO parts VALUES ('767', 'Odd', 'Wing', 2);
  Insert INTO parts VALUES ('777', 'Odd', 'Wing', 2);
  Insert INTO parts VALUES ('737', 'Even', 'Galley', 1);
  Insert INTO parts VALUES ('747', 'EVen', 'Galley', 3);
  Insert INTO parts VALUES ('757', 'EVEN', 'Galley', 3);
  Insert INTO parts VALUES ('767', 'EVeN', 'Galley', 2);
  Insert INTO parts VALUES ('777', 'even', 'Galley', 3);
  Insert INTO parts VALUES ('737', 'ODD', 'Galley', 2);
  Insert INTO parts VALUES ('747', 'odd', 'Galley', 4);
  Insert INTO parts VALUES ('757', 'Odd', 'Galley', 3);
  Insert INTO parts VALUES ('767', 'ODd', 'Galley', 4);
  Insert INTO parts VALUES ('777', 'odD', 'Galley', 4);
  Insert INTO parts VALUES ('737', 'Even', 'Tire', 10);
  Insert INTO parts VALUES ('747', 'Even', 'Tire', 18);
  Insert INTO parts VALUES ('757', 'Even', 'Tire', 12);
  Insert INTO parts VALUES ('767', 'Even', 'Tire', 14);
  Insert INTO parts VALUES ('777', 'EveN', 'Tire', 16);
  Insert INTO parts VALUES ('737', 'ODD', 'Tire', 14);
  Insert INTO parts VALUES ('747', 'Odd', 'Tire', 20);
  Insert INTO parts VALUES ('757', 'Odd', 'Tire', 14);
  Insert INTO parts VALUES ('767', 'Odd', 'Tire', 16);
  Insert INTO parts VALUES ('777', 'Odd', 'Tire', 18);
  Insert INTO parts VALUES ('737', 'Even', 'Seats', 105);
  Insert INTO parts VALUES ('747', 'Even', 'Seats', 255);
  Insert INTO parts VALUES ('757', 'Even', 'Seats', 140);
  Insert INTO parts VALUES ('767', 'Even', 'Seats', 200);
  Insert INTO parts VALUES ('777', 'EveN', 'Seats', 210);
  Insert INTO parts VALUES ('737', 'ODD', 'Seats', 137);
  Insert INTO parts VALUES ('747', 'Odd', 'Seats', 20);
  Insert INTO parts VALUES ('757', 'Odd', 'Seats', 166);
  Insert INTO parts VALUES ('767', 'Odd', 'Seats', 345);
  Insert INTO parts VALUES ('777', 'Odd', 'Seats', 267);
  COMMIT;
END;
/
[code]


巢狀固定的遊標

Nested Loops With Static Cursors

DeMo:
[code]    

Create or REPLACE PROCEDURE nested_loop IS

CURSOR a_cur IS
Select program_id, line_number, customer_id
FROM airplanes;

a_rec a_cur%ROWTYPE;

CURSOR p_cur IS
Select part_type, quantity
FROM parts
Where program_id = a_rec.program_id
AND UPPER(line_type)=DECODE(MOD(a_rec.line_number,2),0,'EVEN','ODD');

p_rec p_cur%ROWTYPE;

BEGIN
  OPEN a_cur;
  LOOP
    FETCH a_cur INTO a_rec;
    EXIT WHEN a_cur%NOTFOUND;

    OPEN p_cur;
    LOOP
      FETCH p_cur INTO p_rec;
      EXIT WHEN p_cur%NOTFOUND;
      Insert INTO ap_parts
      (customer_id, part_type, quantity)
      VALUES
      (a_rec.customer_id, p_rec.part_type, p_rec.quantity);
    END LOOP;
    CLOSE p_cur;

  END LOOP;
  COMMIT;
  CLOSE a_cur;
END nested_loop;
/