PL SQL控制語句

2022-06-26 06:33:08 字數 4915 閱讀 6742

本節要點:

l  迴圈結構控制語句

pl/sql既然是面向過程的程式語言,那麼它就有針對邏輯的控制語句,這些語句在日常的pl/sql程式設計中起著很重要的作用,可以完成業務邏輯的框架部分。下面就來介紹pl/sql的邏輯控制語句。

1選擇結構控制語句

1.1if條件控制語句

條件控制語句就是根據當前某個引數的值來判斷進入哪乙個流程,這就好像做選擇題一樣,當滿足某個條件時就進入對應的流程,否則進入另乙個流程。

語法:if condition then

statements;

[elsif condition then

statements;]

[else

statements;]

end if;

注意:elsif子句的關鍵字是乙個單詞,不能寫成「elseif」或「else if」

示例:編寫pl/sql語句塊,根據所購買圖書的零售價,然後確定在發貨時應該包括的禮品。

declare

v_gift varchar2(20);

c_retailprice number(5,2):=&price;

begin

if c_retailprice>56 then

v_gift:='free shipping';

elsif c_retailprice>25 then

v_gift:='bookcover';

elsif c_retailprice>12 then

v_gift:='box of book labels';

else

v_gift:='bookmarker';

end if;

dbms_output.put_line('the gift for a book costing '||c_retailprice||' is a '||v_gift);

end示例:請按以下對應關係,根據成績的不同,列印出對應的級別

>90    a

>80    b

>70    c

>=60   d

<60    e

declare

v_grade varchar2(20);

c_score number(5, 2) := &score;

begin

if c_score > 90 then

v_grade := 'a';

elsif c_score > 80 then

v_grade := 'b';

elsif c_score > 70 then

v_grade := 'c';

elsif c_score >= 60 then

v_grade := 'd';

elsif c_score < 60 then

v_grade := 'e';

else

v_grade := 'error put in';

end if;

dbms_output.put_line('the grade is ' || v_grade);

end;

1.2case語句

case語句同if語句類似,也是根據條件選擇對應的語句執行。

語法:case selector

when expression1 then result1

when expression2 then result2

when expressionn then resultn

[ else resultn+1]

end;

示例:根據不同的輸入列印不同的資訊

declare

v_grade     char(1) := upper('&p_grade');

begin

end;

2迴圈結構控制語句

希望反覆執行pl/sql塊的可執行部分中的語句。建立乙個迴圈,其中包括要執行的語句,這個迴圈一直重複,直到滿足某個條件為止,這時將會退出迴圈。有三種型別的迴圈,你可以在pl/sql塊的可執行部分使用它們,以便重複執行一組語句:

2.1基本loop迴圈

語法:loop

statements;

exit [when condition];

end loop;

注意:因為要執行的語句之後列出了exit的關鍵字,所以迴圈中任何語句至少自動執行一次。這被稱為「後測試」(post-test)。在執行語句之後,將評估exit子句中列出的任何條件,如果新增為true,那麼迴圈將會結束,然後將執行pl/sql塊的其餘部分。

示例:建立乙個列印一系列數字的迴圈。

declare

v_counter number(1) := 0;

begin

loop

v_counter := v_counter + 1;

dbms_output.put_line('the current value of the counter is ' ||

v_counter);

exit when v_counter = 4;

end loop;

end;

示例:列印1-10之間的偶數

declare

v_counter number(2) := 1;

begin

loop

if mod(v_counter, 2) = 0 then

dbms_output.put_line('the current value of the counter is ' ||

v_counter);

end if;

v_counter := v_counter + 1;

exit when v_counter > 10;

end loop;

end;

2.2for迴圈

語法:for counter in[reverse] lower_limit..upper_limit loop

statements;

end loop;

示例:for迴圈使用i作為迴圈計數器,in關鍵字指定範圍

begin

for i in 1 .. 10 loop

dbms_output.put_line('the current value of the counter is ' || i);

end loop;

end;

2.3while迴圈

執行一系列語句,直到條件變為false為止。與前面迴圈不同,如果條件最初為false,那麼永遠不能進入這個迴圈。 在while子句提供的條件決定了迴圈將在何時終止。

語法:while condition loop

statements;

end loop;

示例:pl/sql塊中使用while迴圈來顯示變數的值,直到指定的條件為false為止。

declare

v_counter number(2):=0;

begin

while v_counter<15 loop

dbms_output.put_line('the current  value of the counter is '||v_counter);

v_counter:=v_counter+1;

end loop;

end;

示例:請列印出1~10之間的偶數(注:請用while loop的語法實現)

declare

v_counter number(2) := 1;

begin

while v_counter <= 10 loop

if mod(v_counter, 2) = 0 then

dbms_output.put_line('the current  value of the counter is ' ||v_counter);

end if;

v_counter := v_counter + 1;

end loop;

end;

2.4巢狀迴圈

任何型別的迴圈都可以巢狀在另乙個迴圈中。

注意:在控制返回外部迴圈之前,必須完成內部迴圈的執行。在控制返回迴圈之後,只要外部迴圈的條件有效,就會再次執行外部迴圈,這包括了內部迴圈的執行。這個過程將一直繼續,直到外部迴圈結束為止。

示例:pl/sql塊包含了乙個巢狀的for迴圈

declare

v_counter number(2):=0;

begin

while v_counter<3 loop

for i in 1..2 loop

dbms_output.put_line('the current value of the for loop counter is '||i);

end loop;

dbms_output.put_line('the current value of the while counter is '||v_counter);

v_counter:=v_counter+1;

end loop;

end;

PL SQL 迴圈控制語句

判斷語句 if.else declare v age number not null 50 beginif0 v age and v age 18 then dbms output.put line 兒童 elsif 18 v age and v age 30 then dbms output.pu...

PLSQL基本控制語句

根據員工號,查詢員工薪水 declare v empno emp.empno type v sal emp.sal type begin v empno 7369 select sal into v sal from emp where empno v empno dbms output.put l...

PL SQL之 流程控制語句

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