oracle存儲過程中的循環(huán)語句:1、LOOP循環(huán),語法為“l(fā)oop 循環(huán)體;EXIT WHEN 結(jié)束循環(huán)條件表達(dá)式;END LOOP;”;2、WHILE循環(huán),語法為“while 條件表達(dá)式 loop 循環(huán)語句;end loop;”;3、for循環(huán),語法為“for 變量 IN (reverse) 計數(shù)器下限值…計數(shù)器上限值 LOOP 循環(huán)體;END LOOP;”。
本教程操作環(huán)境:windows10系統(tǒng)、Oracle 12c版、Dell G3電腦。
oracle存儲過程中的循環(huán)語句有哪些
當(dāng)程序需要反復(fù)執(zhí)行某一操作時,就必須使用循環(huán)結(jié)構(gòu)。PL/SQL 中的循環(huán)語句主要包括LOOP語句、WHERE語句和FOR語句3種。
LOOP語句
LOOP語句會先執(zhí)行一次循環(huán)體,然后再判斷EXIT WHEN關(guān)鍵字后面的條件表達(dá)式是ture還是false,為true的時候退出循環(huán)體,否則程序?qū)⒃俅螆?zhí)行循環(huán)體。
基本語法:
loop A; EXIT WHEN B; END LOOP;
A: 代表循環(huán)體中的sql語句,可以是一句也可能是多句,這是循環(huán)體核心部分,這些語句至少被執(zhí)行一遍。
B: 循環(huán)結(jié)束條件表達(dá)式,為ture時,退出循環(huán),否則再次執(zhí)行循環(huán)體。
代碼示例:
-- Created on 2020/12/16 by GUO declare i int:= 0; begin loop i:=i+1; dbms_output.put_line(i); EXIT WHEN i > 3; END LOOP; end;
運行結(jié)果:
實戰(zhàn)示例:
使用Loop+游標(biāo)的時候,取游標(biāo)當(dāng)中的值,必須重新賦值一遍,要不然會報錯。
-- Created on 2020/12/17 by GUO declare cursor user is select * from user_table; user1 user_table%rowtype; begin open user; loop fetch user into user1; exit when user%notfound; dbms_output.put_line('用戶名稱:' || user1.USER_NAME); dbms_output.put_line('用戶年齡:' || user1.USER_AGE); end loop; close user; --關(guān)閉游標(biāo) end;
WHILE語句
在執(zhí)行之前,首先要判斷條件表達(dá)式的值是否為true,true則執(zhí)行循環(huán)體,否則退出WHILE循環(huán),繼續(xù)執(zhí)行循環(huán)后面的代碼。
基本語法:
while a loop b; end loop;
A: 表示一個條件表達(dá)式,當(dāng)值為true時,程序執(zhí)行循環(huán)體,否則退出。
B: 循環(huán)體內(nèi)的sql語句。
代碼示例:
-- Created on 2020/12/17 by GUO declare i int := 0; begin while i < 3 loop i := i + 1; dbms_output.put_line(i); end loop; end;
運行結(jié)果:
實戰(zhàn)示例:
-- Created on 2020/12/17 by GUO declare cursor user is select * from user_table; user1 user_table%rowtype; begin open user; fetch user into user1; while(user%found)loop dbms_output.put_line('用戶名稱:' || user1.USER_NAME); fetch user into user1; end loop; end;
FOR語句
FOR語句是一個可提前設(shè)置循環(huán)次數(shù)的循環(huán)控制語句,它有一個循環(huán)計數(shù)器,通常是一個整型變量,通過這個計數(shù)器來控制循環(huán)次數(shù)。
基本語法:
for A IN (reverse) B...C LOOP D; END LOOP;
A: 表示一個變量,通常為證書類型,用來作為計數(shù)器,默認(rèn)值是遞增的,當(dāng)循環(huán)當(dāng)中使用reverse關(guān)鍵字時,就會循環(huán)遞減。
B: 計數(shù)器下限值,當(dāng)計數(shù)器的值小于下限值的時候,終止循環(huán)。
C: 計數(shù)器上限值,當(dāng)計數(shù)器的值大于上限值的時候,終止循環(huán)。
D: 循環(huán)體。
代碼示例:
-- Created on 2020/12/17 by GUO declare i int := 0; begin for i IN reverse 1..5 LOOP dbms_output.put_line(i); END LOOP; end;
運行結(jié)果:
實戰(zhàn)示例:
配合游標(biāo)使用
-- Created on 2020/12/17 by GUO declare cursor user is select * from user_table; begin for user1 in user loop dbms_output.put_line('用戶名稱:'||user1.USER_NAME); dbms_output.put_line('用戶年齡:'||user1.USER_AGE); end loop; end;
推薦教程:《Oracle視頻教程》