以下是原文翻译成繁體中文的內容:
# PL/SQL - 迴圈:您進行高效編程的入口
你好,未來的編程超新星!今天,我們將踏上一段令人興奮的旅程,進入 PL/SQL 迴圈的世界。作為你們友好的鄰居電腦老師,我將指導你們進行這次冒險,一步步地。所以,請繫好安全帶,我們一起跳水吧!
## 了解迴圈:基礎知識
在我們深入細節之前,讓我們先了解迴圈是什麼。想像一下,你被要求在黑板上寫 100 遍「我愛編程」。這聽起來很無聊,對吧?這就是迴圈拯救我們的地方!它們讓我們能夠重複執行一組指令而不需要重複寫入同樣的代碼。
在 PL/SQL 中,我們有三種主要的迴圈類型:
1. LOOP
2. FOR LOOP
3. WHILE LOOP
讓我們詳細探討每一種。
### 1. 簡單的 LOOP
簡單的 LOOP 就像一隻堅持不懈的小狗追著自己的尾巴——它會不斷地繞圈子直到你告訴它停止。這是它的樣子:
```sql
LOOP
-- 在這裡寫入你的代碼
EXIT WHEN 條件;
END LOOP;
讓我們看一個實際的例子:
DECLARE
v_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('迴圈迭代:' || v_counter);
v_counter := v_counter + 1;
EXIT WHEN v_counter > 5;
END LOOP;
END;
在這個例子中,我們正在打印迴圈的迭代號。這個迴圈會繼續直到我們的計數器超過 5。這就像數羊入睡,但我們在 5 止步,因為我們是高效的編程員,而不是失眠者!
2. FOR LOOP
FOR LOOP 就像一個組織有序的導遊。它知道需要重複多少次,並且會自動停止。這是語法:
FOR counter IN [REVERSE] lower_bound..upper_bound LOOP
-- 在這裡寫入你的代碼
END LOOP;
讓我們看看它在行動:
BEGIN
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('迭代 ' || i || ':我愛 PL/SQL!');
END LOOP;
END;
這個迴圈會打印 "我愛 PL/SQL!" 五次,每次都帶有它的迭代號。這就像設定一個目標,每天稱讚 PL/SQL 五次——可達成且具體!
3. WHILE LOOP
WHILE LOOP 就像一個謹慎的駕駛員。它在每次迭代之前檢查條件。這是它的工作方式:
WHILE 條件 LOOP
-- 在這裡寫入你的代碼
END LOOP;
讓我們看一個例子:
DECLARE
v_sum NUMBER := 0;
v_counter NUMBER := 1;
BEGIN
WHILE v_sum < 10 LOOP
v_sum := v_sum + v_counter;
DBMS_OUTPUT.PUT_LINE('總和:' || v_sum || ',計數器:' || v_counter);
v_counter := v_counter + 1;
END LOOP;
END;
這個迴圈會累加數字(1, 2, 3, ...)直到總和超過 10。這就像填滿一個存錢罐直到你有足夠的錢買那個閃亮的全新小玩意!
為 PL/SQL 迴圈標籤
現在,讓我們來談談為迴圈標籤。這就像給你的迴圈寵物取一個名字——它幫助你更好地識別和控制它,特別是當你有嵌套迴圈時。這是如何為迴圈標籤:
<<loop_label>>
LOOP
-- 在這裡寫入你的代碼
END LOOP loop_label;
這裡有一個帶有嵌套迴圈的例子:
<<outer_loop>>
FOR i IN 1..3 LOOP
<<inner_loop>>
FOR j IN 1..3 LOOP
DBMS_OUTPUT.PUT_LINE('外層:' || i || ',內層:' || j);
IF i = 2 AND j = 2 THEN
EXIT outer_loop;
END IF;
END LOOP inner_loop;
END LOOP outer_loop;
在這個例子中,當 i=2 和 j=2 時,我們退出外層迴圈。這就像一個遊戲,其中有嵌套的俄羅斯套娃,但我們決定在 halfway 中止打開它們!
迴圈控制語句
迴圈控制語句就像你迴圈車輛的方向盤。它們幫助你導航迴圈的執行。讓我們看看主要的語句:
語句 | 描述 |
---|---|
EXIT | 立即退出迴圈 |
EXIT WHEN | 当條件為真時退出迴圈 |
CONTINUE | 跳過當前迭代的剩餘部分並移動到下一個 |
CONTINUE WHEN | 当條件為真時跳過當前迭代的剩餘部分 |
這裡有一個使用這些控制語句的例子:
DECLARE
v_counter NUMBER := 0;
BEGIN
LOOP
v_counter := v_counter + 1;
-- 跳過奇數
CONTINUE WHEN MOD(v_counter, 2) != 0;
DBMS_OUTPUT.PUT_LINE('偶數:' || v_counter);
-- 當我們達到 10 時退出
EXIT WHEN v_counter = 10;
END LOOP;
END;
這個迴圈打印從 2 到 10 的偶數。這就像一個挑食者穿梭在自助餐中——跳過看起來奇怪的菜餚並在他們飽了時停止!
結論
這就是你們,夥伴們!我們已經在 PL/SQL 迴圈的世界中繞了一圈。記住,迴圈是你編程工具包中的強大工具。它們幫助你自動化重複任務,高效處理數據,並使你的代碼更優雅。
當你練習時,你會發現自己對這些概念越來越熟悉。不要害怕嘗試——這是我們所有人學習和成長為編程員的方式。誰知道呢?也許有一天你會發現自己在睡夢中寫迴圈(但願不是,為了你的床單)!
繼續編程,繼續學習,最重要的是,繼續在 PL/SQL 中玩得開心!
Credits: Image by storyset