溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle之PL/SQL編程_流程控制語句

發(fā)布時(shí)間:2020-08-07 03:29:17 來源:網(wǎng)絡(luò) 閱讀:1077 作者:SimplePoint 欄目:關(guān)系型數(shù)據(jù)庫

選擇語句


1. if...then 語句

語法:

if < condition_expression > then
plsql_sentence
end if;


condition_expression:表示一個(gè)條件表達(dá)式,其值為 true 時(shí),程序會(huì)執(zhí)行 if 下面的 PL/SQL 語句;

如果其值為 false,則程序會(huì)跳過if 下面的語句而 直接執(zhí)行 end if 后邊的語句。


plsql_sentence:condition_expression 為 true 時(shí),要執(zhí)行的語句。


2. if...then...else 語句

語法:

if < condition_expression > then
plsql_sentence_1;
else
plsql_sentence_2;
end if;


3.if...then...elsif 語句

語法:

if < condition_expression1 > then
plsql_sentence_1;
elsif < condition_expression2 > then
plsql_sentence_2;
...
else
plsql_sentence_n;
end if;


4. case 語句

語法:

case < selector >
when <expression_1> then plsql_sentence_1;
when <expression_2> then plsql_sentence_2;
...
when <expression_n> then plsql_sentence_n;
[else plsql_sentence;]
end case;


selector:一個(gè)變量,用來存儲(chǔ)要檢測(cè)的值,通常稱之為選擇器。

該選擇器的值需要與 when 子句中的表達(dá)式的值進(jìn)行匹配。


expression_1:第一個(gè) when 子句中的表達(dá)式,這種表達(dá)式通常是一個(gè)常量,當(dāng)選擇器的值等于該表達(dá)式的值時(shí),

程序?qū)?zhí)行 plsql_setence_1 語句。


expression_2:第二個(gè) when 子句中的表達(dá)式,這種表達(dá)式通常是一個(gè)常量,當(dāng)選擇器的值等于該表達(dá)式的值時(shí),

程序?qū)?zhí)行 plsql_setence_2 語句。


expression_n:第 n 個(gè) when 子句中的表達(dá)式,這種表達(dá)式通常是一個(gè)常量,當(dāng)選擇器的值等于該表達(dá)式的值時(shí),

程序?qū)?zhí)行 plsql_setence_n 語句。


plsql_sentence:一個(gè) PL/SQL 語句,當(dāng)沒有與選擇器匹配的 when 常量時(shí),程序?qū)?zhí)行該 PL/SQL 語句,

其所在的 else 語句是一個(gè)可選項(xiàng)。


例:

指定一個(gè)季度數(shù)值,然后使用 case 語句判斷它所包含的月份信息并輸出。

代碼:

declare
season int:=3;
aboutlnfo varchar2(50);
begin
case season
when 1 then
aboutlnfo := season||'季度包括1,2,3 月份';
when 2 then
aboutinfo := season||'季度包括4,5,6 月份';
when 3 then
aboutinfo := season||'季度包括7,8,9 月份';
when 4 then
aboutinfo := season||'季度包括10,11,12 月份';
else
aboutinfo := season||'季節(jié)不合法';
end case;
dbms_output.put_line(aboutinfo);
end;


結(jié)果:3季度包括7,8,9 月份


循環(huán)語句


1. loop 語句

語法:

loop
plsql_sentence;
exit when end_condition_exp
end loop;

plsql_sentence:循環(huán)體中的PL/SQL 語句。至少被執(zhí)行一遍。

end_condition_exp:循環(huán)結(jié)束條件表達(dá)式,當(dāng)該表達(dá)式為 true 時(shí),則程序會(huì)退出循環(huán)體,否則程序?qū)⒃俅螆?zhí)行。


例:

使用 loop 語句求得前 100 個(gè)自然數(shù)的和,并輸出到屏幕。

SQL> set serveroutput on;
SQL> declare
sun_i int:=0;
i int:=0;
begin
loop
i:=i+1;
sum_i:=sum_i +1;
exit when i =100;--當(dāng)循環(huán) 100次,程序退出循環(huán)體。
end loop;
dbms_output.put_line('前100個(gè)自然數(shù)和:'||sum_i);
end;
/


2. while 語句


語法:

while condition_expression loop
plsql_sentence;
end loop;


condition_expression: 表示一個(gè)條件表達(dá)式,但其值為 true 時(shí),程序執(zhí)行循環(huán)體。

否則 程序退出循環(huán)體,程序每次執(zhí)行循環(huán)體之前,都判斷該表達(dá)式是否為 true。

plsql_sentence:循環(huán)內(nèi)的plsql語句。


例:

使用while 語句求得 前100 個(gè)自然數(shù)的和,并輸出到屏幕。

declare 
sum_i int:=0;
i int:=0;
begin
while  i<=99 loop
 i:=i+1;
 sum_i:=sum_i+1;
end loop;
dbms_output.put_line('前100 個(gè)自然數(shù)的和是:'||sum_i);
end;
/


3. for 語句


語法:

for variable_counter_name in [reverse] lower_limit..upper_limit loop
plsql_sentence;
end loop;


variable_counter_name:表示一個(gè)變量,通常為整數(shù)類型,用來作為計(jì)數(shù)器。

默認(rèn)情況下 計(jì)數(shù)器的值會(huì)遞增,當(dāng)在循環(huán)中使用 reverse 關(guān)鍵字時(shí),計(jì)數(shù)器的值會(huì)隨循環(huán)遞減。


lower_limit:計(jì)數(shù)器下限值,當(dāng)計(jì)數(shù)器的值小于下限值時(shí),退出循環(huán)。

upper_limit:計(jì)數(shù)器上限值,當(dāng)計(jì)數(shù)器的值大于上限值時(shí),退出循環(huán)。

plsql_sentence:循環(huán)內(nèi)的plsql語句。


例:

使用for語句求得前 100個(gè)自然數(shù)中偶數(shù)之和,并輸出到屏幕。

declare
sum_i int:= 0;
begin
for i in reverse 1..100 loop
if mod(i,2)=0 then--判斷是否為偶數(shù)
 sum_i:=sum_i+i;
end if;
end loop;
dbms_output.put_line('前100個(gè)自然數(shù)中偶數(shù)和:'||sum_i);
end;
/


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI