PL/SQL的if語句的語法定義如下:
IF condition THEN
{...statements...}
ELSIF condition THEN
{...statements...}
ELSE
{...statements...}
END IF;
由於PL/SQL不像高級語言,沒有大括號,如果statements中包含了多個操作,這些操作是否都會執行呢?
下面寫了一個函數做一個實驗,來驗證if語句的執行順序:
<span style="font-size:18px;">create or replace function testif(v_i in number)
return number as
begin
if v_i<0
then
dbms_output.put_line('輸出內容1');
dbms_output.put_line('輸出內容2');
dbms_output.put_line('輸出內容3');
elsif v_i=1 then
dbms_output.put_line('輸出內容4');
dbms_output.put_line('輸出內容5');
elsif v_i=2 then
dbms_output.put_line('輸出內容6');
dbms_output.put_line('輸出內容7');
else
dbms_output.put_line('輸出內容8');
dbms_output.put_line('輸出內容9');
end if;
return v_i;
end testif;
</span>
如果v_i=-1時,控制檯打印出:
輸出內容1
輸出內容2
輸出內容3
如果v_i=1時,控制檯打印出:
輸出內容4
輸出內容5
如果v_i=2時,控制檯打印出:
輸出內容6
輸出內容7
如果v_i=3時,控制檯打印出:
輸出內容8
輸出內容9
總結:
PL/SQL中,不需要大括號或begin..end把下面三個語句括起來,下面三個語句也會一起執行。
<span style="font-size:18px;"> dbms_output.put_line('輸出內容1');
dbms_output.put_line('輸出內容2');
dbms_output.put_line('輸出內容3');</span>