oracle:IF語句 Loop迴圈 Cursor的用法(一)
阿新 • • 發佈:2019-02-19
程式程式碼
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;
/
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;
/