pl sql運算元據庫之流程控制(判斷和迴圈)

2021-08-20 22:57:09 字數 3811 閱讀 1815

這篇文章講述的是pl/sql運算元據庫之流程控制,如有錯誤或者不當之處,希望各位大神批評指正。

if

《布林表示式》 then

pl/sql 和 sql語句

elsif

< 其它布林表示式》 then

其它語句

elsif

< 其它布林表示式》 then

其它語句

else

其它語句

endif;

declare 

v_student student%rowtype ;

begin

select *** into v_student.***

from student

where id = 100002 ;

if v_student.*** = 'm'

then

dbms_output.put_line('男生');

elsif

v_student.*** = 'f'

then

dbms_output.put_line('女生');

else

dbms_output.put_line('沒有性別?') ;

endif ;

end ;

case selector

when expression1 then result1

when expression2 then result2

when expressionn then resultn

[ else resultn+1]

end;

declare 

v_student student%rowtype ;

v_*** char(20) ;

begin

select *** into v_student.***

from student

where id = 100001 ;

v_***:=

case v_student.*** when 'm'

then

'男生'

when 'f'

then

'女生'

else

'沒有性別?'

end ;

dbms_output.put_line(v_***) ;

end ;

loop

要執行的語句;

exit

when

《條件語句》 /*條件滿足,退出迴圈語句*/

endloop;

declare 

v_i number(10):=1 ;

begin

loop

dbms_output.put_line(v_i) ;

exit

when v_i>=100 ;

v_i := v_i+1 ;

endloop ;

end ;

while

《布林表示式》 loop

要執行的語句;

endloop;

declare 

v_i number(10):=1 ;

begin

while v_i <= 100

loop dbms_output.put_line(v_i) ;

v_i := v_i+1 ;

end loop ;

end ;

for 迴圈計數器 in [ reverse ] 下限 .. 上限 loop

要執行的語句;

endloop;

每迴圈一次,迴圈變數自動加1;使用關鍵字reverse,迴圈變數自動減1。

跟在in reverse 後面的數字必須是從小到大的順序,而且必須是整數,

不能是變數或表示式。可以使用exit 退出迴圈。

declare 

begin

for i in

1..100 loop

dbms_output.put_line(i) ;

end loop ;

end ;

/*while寫法:*/

declare

v_i number(10):=2 ;

v_j number(10):=2 ;

v_flag number(1):=1 ;

begin

while v_i <= 100

loop

while v_j <=sqrt(v_i) loop

ifmod(v_i,v_j)=0

then v_flag:=0 ;

endif; v_j:= v_j+1 ;

endloop ;

if v_flag = 1

then dbms_output.put_line(v_i) ;

endif ;

v_i:=v_i+1 ;

v_flag:=1 ;

v_j:=2 ;

endloop ;

end ;

/*for寫法*/

declare

v_flag number(1):=1 ;

begin

for i in

2..100

loop

for j in

2..sqrt(i) loop

ifmod(i,j)=0

then v_flag:=0 ;

endif ;

endloop ;

if v_flag=1

then dbms_output.put_line(i);

endif ;

v_flag:=1 ;

endloop ;

end ;

********

goto

label ;

********

<>

執行到goto語句的時候回跳轉到label處。

declare

v_flag number(1):=1 ;

begin

for i in

2..100

loop

for j in

2..sqrt(i) loop

ifmod(i,j)=0

then v_flag:=0 ;

goto label ;

endif ;

endloop ;

<>

if v_flag=1

then dbms_output.put_line(i);

endif ;

v_flag:=1 ;

endloop ;

end ;

declare

v_*** student.***%type ;

begin

select *** into v_***

from student

where id = 100001 ;

if v_***='f'

then dbms_output.put_line('美女約嗎?') ;

else

null ;

endif ;

end ;

PL SQL之 流程控制語句

一 簡介 像程式語言一樣,oracle pl sql也有自己的流程控制語句。通過流程控制語句,我們可以在pl sql中實現一下比較複雜的業務邏輯操作。而無需到程式中去控制,在一定程度上提高了效率,這也是pl sql的強大之處。pl sql流程控制語句有如下幾種 二 語句種類 1 控制語句 a if語...

C 之流程控制

學習到了c 關於語法的學習做一下小小的總結。流程控制分為兩種方法 分支 有條件的執行 迴圈 重複執行相同的語句。1.條件分支 1.三元運算子 2.if語句 if語句功能比較多,是進行決策的有效方式。if語句有兩種形式,一種有else分支,一種沒有。3.switch語句 switch語句與if語句非常...

iOS swift之流程控制

if let let name string?lambo let age int?10 if let 連用,判斷物件的值是否為 nil if let namenew name,let agenew age guard else guard後面的條件如果是true,則直接跳過判斷往下走。如果guard...