6.1 loop
loop…end loop
6.2 exit語句必須放在迴圈內,return語句可以在正常到達程式結尾之前而終止執行
loop
...if...then
...exit;
end exit;
end loop;
6.3exit…whenloop
fetch c1 --就是把游標的值取出來,放到指定變數中
into...
exit when c1%notfound;
...end loop;
close c1;
6.4迴圈標籤 <><>
loop
...end loop name; --這裡name可寫可不寫
使用標籤退出迴圈
<>
loop
... loop
... exit name when ... --退出外部迴圈name,則巢狀的內部迴圈也退出
end loop;
end loop name;
6.5while…loopwhile boolean --避免死迴圈
loop
...end loop;
6.6for…loop
注意: 可以使用(…)兩個點號界定範圍
注意: 這裡 i 就是迴圈計數器,不能在後面通過 i := 6 方式進行重新賦值
for i in 1..3 loop --i在1,2,3依次迴圈執行loop語句
...end loop;
for i in reverse 1..3 loop --i在 3,2,1依次執行loop
...end loop;
6.6.1迴圈範圍
注意:1.迴圈範圍的邊界可以是文字,變數或表示式,但是都必須是數字,否則異常,下界不一定是1,但是迴圈計數器只能每次+1,
2. 沒有step語法指定迴圈增量,但是可以通過在for迴圈內部擴大迴圈計數器的倍數來實現
注意:1.數值溢位,因為 integer型別在 -231~231 , 在plsql內部把邊界賦值給乙個臨時的pls_integer變數,而pls_integer的範圍就是-231~231 , 如果使用的迴圈範圍超過則會報錯
例如: for i in 1…2**32 loop…就會報錯
6.6.2動態範圍
迴圈的上界未知,通過其他方式獲取
注意: 如果迴圈的下界超過上界就會不被執行loop
6.6.3作用域規則
迴圈計數器只在迴圈內部定義,不能在迴圈外部引用,迴圈退出後,迴圈計數器就會失效,
注意:1.迴圈計數器隱式宣告為integer,所以無需顯示宣告.另外本地宣告會覆蓋全域性宣告
2.如果想要引用全域性變數,需要使用標籤《名稱》
<>
declare
i integer
...begin
...for i 1..10 loop
...if topic.i > 10 then --引用全域性變數
...end if;
end loop;
end topic;
6.6.4使用exit語句<>
for i 1..10 loop
...for j 1..5 loop
fetch c into tmp_rec;
exit topic when c%notfound;
...end loop;
end loop topic;
作用:無條件跳到乙個標籤處
前提:該標籤是全域性唯一
begin
...goto topic;
...<>
insert into tmp values...
end;
注意:
1.goto不能跳入if語句
2.goto不能else語句
3.goto不能從case 的乙個when子句跳入另乙個when子句
4.goto不能從封閉的塊跳入它的子塊
5.goto不能跳出子程式
6.goto不能從異常控制部分跳入當前塊
7.但是: goto可以從乙個異常控制程式中跳轉到乙個封閉塊
null語句本身什麼也不做,只是簡單的把控制權交給下乙個語句而已
oracle 流程控制
if else 運費計算,同乙個省份則只收取基價。根據是不是同乙個省返回距離,同乙個省份則返回零。declare mycityname varchar2 20 長沙市 tocityname varchar2 20 唐山市 dis number cnt number begin select coun...
ORACLE 流程控制語句
一 選擇語句 1 if.then 語句 示例 if temp1.order type normal asn then insert into baan.twhinh905201 erp t sorn,t spon,t orno,t pono,t qrcr,t cwar,t item,t stat,t...
mysql流程控制 MySQL 流程控制
流程控制 1 順序結構 程式從上往下依次執行 2 分支結構 多條路徑選擇一條 3 迴圈結構 在規定範圍內重複執行 一 分支結構 1 if函式 功能 實現分支流 語法 if 表示式1,表示式2,表示式3 執行順序 執行表示式1,成立返回表示式2的值,不成立則返回表示式3的值 應用 任何地方 例 if ...