一 Oracle流程控制

2021-10-02 04:02:41 字數 2311 閱讀 7203

6.1 loop

loop…end loop

6.2 exit語句必須放在迴圈內,return語句可以在正常到達程式結尾之前而終止執行

loop

...if...then

...exit;

end exit;

end loop;

6.3exit…when
loop

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…loop
while 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 ...