在Oracle中,循環(huán)是一種控制結(jié)構(gòu),用于重復(fù)執(zhí)行一段代碼,直到滿(mǎn)足特定條件。在PL/SQL中,有兩種類(lèi)型的循環(huán):基本循環(huán)(也稱(chēng)為無(wú)限循環(huán))和退出循環(huán)。嵌套循環(huán)是指在一個(gè)循環(huán)內(nèi)部包含另一個(gè)循環(huán)。
以下是關(guān)于如何在Oracle中使用嵌套循環(huán)的一些技巧:
DECLARE
i NUMBER := 1;
j NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('外層循環(huán)次數(shù): ' || i);
j := 1;
WHILE j <= 3 LOOP
DBMS_OUTPUT.PUT_LINE(' 內(nèi)層循環(huán)次數(shù): ' || j);
j := j + 1;
END LOOP;
i := i + 1;
EXIT WHEN i > 3;
END LOOP;
END;
BEGIN
FOR i IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE('外層循環(huán)次數(shù): ' || i);
FOR j IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE(' 內(nèi)層循環(huán)次數(shù): ' || j);
END LOOP;
END LOOP;
END;
DECLARE
CURSOR c1 IS SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 3;
CURSOR c2 IS SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 3;
BEGIN
FOR i IN c1 LOOP
DBMS_OUTPUT.PUT_LINE('外層循環(huán)次數(shù): ' || i.LEVEL);
FOR j IN c2 LOOP
DBMS_OUTPUT.PUT_LINE(' 內(nèi)層循環(huán)次數(shù): ' || j.LEVEL);
END LOOP;
END LOOP;
END;
DECLARE
TYPE emp_tab IS TABLE OF employees%ROWTYPE;
emps emp_tab;
BEGIN
-- 獲取所有員工信息
SELECT * BULK COLLECT INTO emps FROM employees;
-- 遍歷每個(gè)部門(mén)
FOR dept IN (SELECT DISTINCT department_id FROM employees) LOOP
DBMS_OUTPUT.PUT_LINE('部門(mén)ID: ' || dept.department_id);
-- 遍歷該部門(mén)的所有員工
FOR emp IN emps.FIRST .. emps.LAST LOOP
IF emps(emp).department_id = dept.department_id THEN
DBMS_OUTPUT.PUT_LINE(' 員工ID: ' || emps(emp).employee_id || ', 姓名: ' || emps(emp).first_name || ' ' || emps(emp).last_name);
END IF;
END LOOP;
END LOOP;
END;
這些示例展示了如何在Oracle中使用嵌套循環(huán)。你可以根據(jù)自己的需求調(diào)整這些示例,以實(shí)現(xiàn)更復(fù)雜的邏輯。