關於pl/sql中流程控制和迴圈的一些總結
pl/sql是功能十分強大的語句,可以和sql一起來用,可以解決一些sql無法完成的問題。下面是關於流程迴圈語句的總結:
一.條件語句:
1.if ....then ....end if;
2.if ....then ....else end if;
3.if ....then ....elsif ...then...end if;
4.
CASE variable_name
WHEN case1 THEN statement1;
WHEN case2 THEN statement2;
... WHEN caseN-1 THEN statementN-1;
[ELSE statementN]
END CASE; 1.
SQL> set serveroutput on;
SQL> declare
2 v_i number := 1;
3 v_sum number := 0;
4 begin
5 loop
6 v_sum :=v_sum + v_i;
7 v_i := v_i +1;
8 if v_i > 100 then exit;
9 end if;
10 end loop;
11 DBMS_OUTPUT.PUT_LINE(v_sum);
12 end;
13 /
5050
PL/SQL 過程已成功完成。
exit在pl/sql中用以結束,上面的匿名塊也可以改寫為:
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
-- if v_i > 100 then exit;(把之前的comment了)
exit when v_i >100; ==>exit用於結束,注意與上面的區別,上面exit後面沒有帶條件。
--end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
================================================
2.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
-- else exit;
else exit when v_i>60;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
=============================================
3.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
elsif v_i>60 then exit ;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
======================================
4.
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case v_i
when 50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when 60 then exit;
end case;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
下面case後面什麼都不加,後面可以判斷具體區間:
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case
when v_i<50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when v_i>60 then exit;
end case;
end loop;
end;
======================================
二.迴圈語句:
1.
while ..
loop
.....
end loop;
.....
end;
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
注意這裡沒有do...while..語句
=============================
for i in .. j
loop
......
end loop;
.......
end;
declare
v_sum number := 0;
begin
for i in 1 .. 100 ==>注意此時這裡變數i不需要定義,可以在for迴圈裡直接用。
loop
v_sum :=v_sum + i;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
for迴圈用在遊標中很普遍,很方便簡潔。
一.條件語句:
1.if ....then ....end if;
2.if ....then ....else end if;
3.if ....then ....elsif ...then...end if;
4.
CASE variable_name
WHEN case1 THEN statement1;
WHEN case2 THEN statement2;
... WHEN caseN-1 THEN statementN-1;
[ELSE statementN]
END CASE; 1.
SQL> set serveroutput on;
SQL> declare
2 v_i number := 1;
3 v_sum number := 0;
4 begin
5 loop
6 v_sum :=v_sum + v_i;
7 v_i := v_i +1;
8 if v_i > 100 then exit;
9 end if;
10 end loop;
11 DBMS_OUTPUT.PUT_LINE(v_sum);
12 end;
13 /
5050
PL/SQL 過程已成功完成。
exit在pl/sql中用以結束,上面的匿名塊也可以改寫為:
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
-- if v_i > 100 then exit;(把之前的comment了)
exit when v_i >100; ==>exit用於結束,注意與上面的區別,上面exit後面沒有帶條件。
--end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
================================================
2.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
-- else exit;
else exit when v_i>60;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
=============================================
3.
declare
v_i number := 1;
v_sum number := 0;
begin
loop
v_sum :=v_sum + v_i;
v_i := v_i +1;
if v_i < 50 then DBMS_OUTPUT.PUT_LINE(v_sum) ;
elsif v_i>60 then exit ;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
======================================
4.
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case v_i
when 50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when 60 then exit;
end case;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
下面case後面什麼都不加,後面可以判斷具體區間:
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
case
when v_i<50 then DBMS_OUTPUT.PUT_LINE(v_sum);
when v_i>60 then exit;
end case;
end loop;
end;
======================================
二.迴圈語句:
1.
while ..
loop
.....
end loop;
.....
end;
declare
v_i number :=1;
v_sum number := 0;
begin
while v_i>100
loop
v_sum :=v_sum + v_i;
v_i := v_i + 1;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
注意這裡沒有do...while..語句
=============================
for i in .. j
loop
......
end loop;
.......
end;
declare
v_sum number := 0;
begin
for i in 1 .. 100 ==>注意此時這裡變數i不需要定義,可以在for迴圈裡直接用。
loop
v_sum :=v_sum + i;
end loop;
DBMS_OUTPUT.PUT_LINE(v_sum);
end;
for迴圈用在遊標中很普遍,很方便簡潔。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1564190/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PL/SQL迴圈控制語句SQL
- PL/SQL 迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-下限和上限SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-FOR迴圈中的索引SQL索引
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈SQL
- pl/sql for loop迴圈的使用SQLOOP
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-WHILE迴圈SQLWhile
- Oracle PL/SQL迴圈示例OracleSQL
- 【PL/SQL】遊標提取迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-基本迴圈(EXIT語句)SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUESQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-EXIT WHENSQL
- 關於JS中for迴圈時,作用域問題和this指標指向的總結JS指標
- 關於pl/sql中的繫結變數SQL變數
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUE WHENSQL
- 關於DDD和COLA的一些總結和思考
- SQL儲存過程迴圈SQL儲存過程
- 關於控制檔案的總結
- oracle pl/sql 迴圈比較集合元素是否相同OracleSQL
- 6.4. PL/SQL語法——6.4.5. 迴圈語句SQL
- pl/sql中三種遊標迴圈效率對比SQL
- 關於Mysql使用的一些總結MySql
- MySql關於鎖的一些總結MySql
- 關於繼承的一些小總結繼承
- 關於EM配置的一些總結
- 關於BUFFER POOL的一些總結
- 關於Oracle塊的一些總結Oracle
- 關於程式和執行緒 自我的一些總結執行緒
- 探討兩種迴圈表示方法的區別,while迴圈與for迴圈的小總結While
- JS 總結之事件迴圈JS事件
- Javascript 常見的迴圈方式總結JavaScript
- 關於pl/sql的程式碼保護SQL
- 關於前端工程化(基建)的一些總結和思考前端
- 關於程式碼質量度量和分析的一些總結
- 關於Code Review的一些思考總結View
- PL/SQL學習筆記-總結SQL筆記
- 04流程控制 for迴圈,while迴圈While
- Dart - 迴圈控制Dart