在實際項目中,Oracle 循環(Loop)通常用于處理大量數據、批量操作或者重復執行相同任務
DECLARE
-- 定義變量和游標
CURSOR c_data IS SELECT * FROM external_data_source;
v_row c_data%ROWTYPE;
BEGIN
-- 打開游標
OPEN c_data;
-- 循環插入數據
LOOP
FETCH c_data INTO v_row;
EXIT WHEN c_data%NOTFOUND;
INSERT INTO target_table (column1, column2, column3)
VALUES (v_row.column1, v_row.column2, v_row.column3);
END LOOP;
-- 關閉游標
CLOSE c_data;
-- 提交事務
COMMIT;
END;
/
DECLARE
-- 定義變量和游標
CURSOR c_data IS SELECT id, date_column FROM source_table;
v_row c_data%ROWTYPE;
BEGIN
-- 打開游標
OPEN c_data;
-- 循環更新數據
LOOP
FETCH c_data INTO v_row;
EXIT WHEN c_data%NOTFOUND;
UPDATE source_table
SET date_column = ADD_MONTHS(v_row.date_column, 1)
WHERE id = v_row.id;
END LOOP;
-- 關閉游標
CLOSE c_data;
-- 提交事務
COMMIT;
END;
/
DECLARE
-- 定義變量和游標
CURSOR c_data IS SELECT id FROM source_table WHERE created_at < SYSDATE - 90;
v_row c_data%ROWTYPE;
BEGIN
-- 打開游標
OPEN c_data;
-- 循環刪除數據
LOOP
FETCH c_data INTO v_row;
EXIT WHEN c_data%NOTFOUND;
DELETE FROM source_table
WHERE id = v_row.id;
END LOOP;
-- 關閉游標
CLOSE c_data;
-- 提交事務
COMMIT;
END;
/
這些示例展示了如何在實際項目中使用 Oracle 循環(Loop)來處理大量數據、批量操作或重復執行相同任務。在實際應用中,根據具體需求和場景選擇合適的循環結構(如 FOR 循環、WHILE 循環等)以及相應的游標、變量和條件。