這篇文章講述的是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...