在Oracle游標循環中嵌套循環的編寫方式與普通的嵌套循環類似,只是需要確保內部循環的游標在外部循環的游標范圍內進行操作。
以下是一個示例代碼,演示了如何在Oracle游標循環中嵌套循環:
DECLARE
CURSOR outer_cursor IS
SELECT department_id, department_name FROM departments;
CURSOR inner_cursor(dept_id departments.department_id%TYPE) IS
SELECT employee_id, first_name, last_name FROM employees WHERE department_id = dept_id;
outer_rec outer_cursor%ROWTYPE;
inner_rec inner_cursor%ROWTYPE;
BEGIN
OPEN outer_cursor;
LOOP
FETCH outer_cursor INTO outer_rec;
EXIT WHEN outer_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Department: ' || outer_rec.department_name);
OPEN inner_cursor(outer_rec.department_id);
LOOP
FETCH inner_cursor INTO inner_rec;
EXIT WHEN inner_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Employee: ' || inner_rec.first_name || ' ' || inner_rec.last_name);
END LOOP;
CLOSE inner_cursor;
END LOOP;
CLOSE outer_cursor;
END;
/
在上面的示例中,外部游標(outer_cursor)用于遍歷部門信息,內部游標(inner_cursor)根據每個部門的ID查詢該部門的員工信息。內部循環在外部循環的每次迭代中執行,確保了內部循環的游標范圍在外部循環的范圍內。
通過這種方式,您可以在Oracle游標循環中嵌套循環以處理復雜的數據關系。