欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle中的循環(huán)之FOR循環(huán)、WHILE循環(huán)和LOOP循環(huán)詳解

 更新時間:2025年06月09日 10:09:04   作者:雷神樂樂  
這篇文章主要介紹了Oracle中的循環(huán)之FOR循環(huán)、WHILE循環(huán)和LOOP循環(huán)的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Oracle中的循環(huán)常用的有:FOR循環(huán)、WHILE循環(huán)和LOOP循環(huán)

一、FOR循環(huán)

1.FOR循環(huán)語法結構

DECLARE   --不聲明變量,可以不寫
       
BEGIN
  FOR 循環(huán)變量 IN  1..10循環(huán)下限 .. 循環(huán)上限 LOOP ------循環(huán)變量 每次自增1
    循環(huán)體;
    END LOOP;
END;

示例:循環(huán)打印1~10

declare
begin
    for i in 1..10
        loop
            DBMS_OUTPUT.PUT_LINE(i);
        end loop;
end;

示例:用戶輸入一個數(shù)字X,循環(huán)打印 1~X

declare
    x number:=:input;
begin
    for i in 1..x
        loop
            DBMS_OUTPUT.PUT_LINE(i);
        end loop;
end;

示例:用戶輸入一個數(shù)字X,打印 1+2+3+..+X 的和是多少

declare
    x number := :input;
    v number := 0;-- 需要有一個變量存放每次累加后的和
begin
    for i in 1..x
        loop
            v := v + i;
        end loop;
    DBMS_OUTPUT.PUT_LINE(v);
end;

計算 1 到 10 的數(shù)字中偶數(shù)的累加值

declare
    v number := 0;-- 需要有一個變量存放每次累加后的和
begin
    for i in 1..10
        loop
            v := v + i;
        end loop;
    DBMS_OUTPUT.PUT_LINE(v);
end;  -- 55

二、WHILE循環(huán)

1.WHILE循環(huán)語法結構

DECLARE

BEGIN
  WHILE 進入循環(huán)的條件 LOOP
    --循環(huán)體
  END LOOP;
END;

示例:循環(huán)打印1~10 以及 輸出格式:

  • 編碼:1
  • 編碼:2
  • ...
DECLARE
    v number := 1;  -- 聲明循環(huán)變量
BEGIN
    WHILE v <= 10
        loop
            DBMS_OUTPUT.PUT_LINE('編碼:' || v);
            v := v + 1; -- 自增
        end loop;
end;

示例:打印100以內,所有偶數(shù)(大于0 從2開始到100結束)

DECLARE
    v number := 2;
BEGIN
    WHILE v <= 100
        loop
            DBMS_OUTPUT.PUT_LINE(v);
            v := v + 2; -- 自增
        end loop;
end;

示例:接收用戶輸入的數(shù)字 X,判斷 X 大于10 則 打印"您輸入的值過大,請重新輸入!" ,如果不大于10,則打印 X 的階乘,比如輸入 6 ,輸出 "6的階乘為 720"

declare
    x number := :input; -- 輸入值
    i number := 1;-- 計數(shù)器
    v number := 1;-- 階乘累加值
begin
    if x > 10 then
        DBMS_OUTPUT.PUT_LINE('您輸入的值過大,請重新輸入!');
    else
        while i <= x -- 一定是計數(shù)器<=輸入值(上限)
            loop
                v := v * i;
                i := i + 1;-- 計數(shù)器+1
            end loop;
        DBMS_OUTPUT.PUT_LINE(x || '的階乘為:' || v);
    end if;
end;

綜合練習:

分別使用FOR循環(huán)和WHILE循環(huán),計算1 到 10 的累加值

-- FOR循環(huán)
declare
    v number := 0; -- 存放累加值
begin
    for i in 1..10
        loop
            v := v + i;
        end loop;
    DBMS_OUTPUT.PUT_LINE('1~10的累加值為:' || v);
end;

-- WHILE循環(huán)
declare
    i number := 1;-- 存放初始值
    v number := 0; -- 存放累加值
begin
    while i <= 10
        loop
            v := v + i;
            i := i + 1;
        end loop;
    DBMS_OUTPUT.PUT_LINE('1~10的累加值為:' || v);
end;

分別使用FOR循環(huán)和WHILE循環(huán),計算1 到 10 偶數(shù)的累加值

-- FOR循環(huán)
declare
    v number := 0; -- 存放累加值
begin
    for i in 1..10
        loop
            if mod(i, 2) = 0 then
                v := v + i;
            end if;
        end loop;
    DBMS_OUTPUT.PUT_LINE('1~10的偶數(shù)累加值為:' || v);
end;

-- WHILE循環(huán)
declare
    i number := 1;-- 存放初始值
    v number := 0; -- 存放累加值
begin
    while i <= 10
        loop
            if mod(i, 2) = 0 then
                v := v + i;
            end if;
            i := i + 1;
        end loop;
    DBMS_OUTPUT.PUT_LINE('1~10的偶數(shù)累加值為:' || v);
end;

三、LOOP循環(huán)

1.LOOP循環(huán)語法結構

DECLARE
  --聲明
BEGIN
  LOOP
   ------循環(huán)體
    IF 跳出該循環(huán)的條件 THEN
      EXIT;
    END IF;
  END LOOP;
END;

-----

DECLARE
  --聲明
BEGIN
  LOOP
   ------循環(huán)體
    EXIT WHEN 跳出該循環(huán)的條件;
  END LOOP;
END;

示例:打印 1 到 100 的數(shù)字中偶數(shù)

declare
    i number := 2;-- 初始值為2
begin
    loop
        DBMS_OUTPUT.PUT_LINE(i);
        i := i + 2;
        if i > 100 then
            exit ;
        end if;
    end loop;
end;


declare
    i number := 2;-- 初始值為2
begin
    loop
        DBMS_OUTPUT.PUT_LINE(i);
        i := i + 2;
        exit when i > 100;
    end loop;
end;

練習:計算 1到 10奇數(shù)的累加 --loop

declare
    i     number := 1;-- 初始值為1
    v_sum number := 0;-- 存放累加值
begin
    loop
        if mod(i, 2) = 1 then
            v_sum := v_sum + i;
        end if;
        i := i + 1;
        exit when i > 10;
    end loop;
    DBMS_OUTPUT.PUT_LINE('1-10奇數(shù)的累加值為:' || v_sum);
end;

-- 方法二
declare
    i     number := 1;-- 初始值為1
    v_sum number := 0;-- 存放累加值
begin
    loop
        v_sum := v_sum + i;
        i := i + 2;
        exit when i > 10;
    end loop;
    DBMS_OUTPUT.PUT_LINE('1-10奇數(shù)的累加值為:' || v_sum);
end;

四、三個循環(huán)的區(qū)別(重要)

1.FOR 循環(huán) 不需要設置i自增,因為默認就是自增1

  • FOR i IN 10..100 LOOP
  • 要做的事情
  • END LOOP;

2.WHILE 循環(huán) 需要設置變量自增,且循環(huán)條件放在 WHILE 后面

  • WHILE 循環(huán)的條件(J <=10) LOOP
  • 要做的事情
  • 變量的遞增(遞減)--變量肯定要重新賦值,不然就是死循環(huán)
  • END LOOP;

3.LOOP 循環(huán) 需要設置變量自增,且退出循環(huán)的條件放到 IF 后

  • LOOP
  • 想做的事情
  • IF 退出循環(huán)的場景
THEN EXIT;
END IF;
END LOOP;

假設有100塊錢,打算買100只雞,公雞一只5元,母雞一只3元,小雞3只1元,請問100塊錢剛好花完,每種雞至少買1只,每種雞各可以買多少?

BEGIN
    FOR g IN 1..20
        LOOP
            FOR m IN 1..33
                LOOP
                    FOR x IN 1..100
                        LOOP
                            IF g + m + x = 100 AND 5 * g + 3 * m + x / 3 = 100 THEN
                                dbms_output.put_line('公雞:' || g || ' 母雞:' || m || ' 小雞:' || x);
                            END IF;
                        END LOOP;
                END LOOP;
        END LOOP;
END;

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Oracle創(chuàng)建Database Link的兩種方式詳解

    Oracle創(chuàng)建Database Link的兩種方式詳解

    Oracle數(shù)據(jù)庫如何創(chuàng)建Database Link呢?本文我們主要就介紹一下這部分內容,Oracle數(shù)據(jù)庫創(chuàng)建Database Link有兩種方式,一種是通過菜單,一種是通過SQL
    2016-02-02
  • Oracle12c圖形化&靜默安裝踩坑的方法步驟

    Oracle12c圖形化&靜默安裝踩坑的方法步驟

    這篇文章主要介紹了Oracle12c圖形化&靜默安裝踩坑的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Oracle中is和as的區(qū)別和使用

    Oracle中is和as的區(qū)別和使用

    在Oracle數(shù)據(jù)庫中,AS和IS是兩個常用的關鍵字,它們分別表示“命名別名”和“判斷是否相同”,AS和IS的主要區(qū)別在于它們的功能,AS是一種授權服務,它負責授予和管理用戶訪問數(shù)據(jù)庫特定對象和操作的權限,IS則是一種身份驗證服務,它負責管理用戶的身份和訪問權限
    2024-01-01
  • oracle中的procedure編寫和使用詳解

    oracle中的procedure編寫和使用詳解

    這篇文章主要介紹了oracle中的procedure編寫和使用詳解的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Oracle常見錯誤代碼的分析與解決

    Oracle常見錯誤代碼的分析與解決

    Oracle常見錯誤代碼的分析與解決...
    2007-03-03
  • Oracle數(shù)據(jù)庫的實例/表空間/用戶/表之間關系簡單講解

    Oracle數(shù)據(jù)庫的實例/表空間/用戶/表之間關系簡單講解

    這篇文章主要介紹了Oracle數(shù)據(jù)庫的實例/表空間/用戶/表之間關系簡單講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • ORCAL 臨時創(chuàng)建表與刪除表

    ORCAL 臨時創(chuàng)建表與刪除表

    今天這篇文章就來給大家分享ORCAL 臨時創(chuàng)建表與刪除表的相關資料,如會話級臨時表是指臨時表中的數(shù)據(jù)只在會話生命周期之中存在,當用戶退出會話結束的時候,Oracle自動清除臨時表中數(shù)據(jù)。下面就跟小編一起進入文章學習起來吧
    2021-10-10
  • ORACLE實現(xiàn)自定義序列號生成的方法

    ORACLE實現(xiàn)自定義序列號生成的方法

    這篇文章主要為大家詳細介紹了ORACLE實現(xiàn)自定義序列號生成的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Oracle切換為歸檔模式的步驟及問題解決

    Oracle切換為歸檔模式的步驟及問題解決

    這篇文章主要介紹了Oracle切換為歸檔模式的步驟,還有遇到的問題解決方法,大家參考使用吧
    2013-11-11
  • 一文掌握Oracle中的Dual系統(tǒng)表

    一文掌握Oracle中的Dual系統(tǒng)表

    Dual表是Oracle提供的最小的工作表(其實是一種虛擬表),是sys用戶下的一張內部表,只有一行一列(一列:DUMMY,一列:DUMMY,其數(shù)據(jù)類型為:VARCHAR2(1)),接下來通過本文給大家分享Oracle中的Dual系統(tǒng)表,需要的朋友可以參考下
    2022-09-09

最新評論