讓你提前認識軟體開發(31):資料庫指令碼中的begin與end

來源:互聯網
上載者:User

第2部分 資料庫SQL語言

資料庫指令碼中的begin與end

 

        在資料庫指令碼中,begin與end是一對奇怪的單詞。缺少它們,某些代碼看起來會讓人一頭霧水;添加它們,代碼的結構瞬間就清晰了。

        確實,begin與end作為代碼語句的開始和結束標誌,可以讓指令碼程式的邏輯明確,易於閱讀。

        begin與end主要用在以下地方:

1. if、else、else if、while等語句中

        if、else、else if、while等語句要自佔一行,執行語句不得緊跟其後,不論執行語句有多少都要加語句塊標誌begin…end。

        指令檔中的begin和end應獨佔一行並且位於同一起始列,同時與引用它們的語句靠左對齊。begin…end之內的代碼塊使用縮排,一般縮排為4個空格。

        正例:

if (@varible1 < @varible2)

begin

    [執行語句]

end

 

        反例1:

if (@varible1 < @varible2)

    [執行語句1]

    [執行語句2]

        在反例1中,由於缺少了begin和end,因此對“執行語句1”和“執行語句2”的“歸屬問題”帶來了疑惑,很容易讓人把代碼的邏輯搞錯。

 

        反例2:

if (@varible1 < @varible2)

       begin

          [執行語句]

end

        在反例2中,begin和end沒有位於同一起始列,也沒有與引用它們的語句靠左對齊。這樣一看,代碼就顯得很淩亂。

 

        反例3:

if (@varible1 < @varible2)  begin

             [執行語句]

end

 

        在反例3中,begin與if語句位於同一程式碼,這也是不規範的。

 

2. 建立預存程序(函數、觸發器等)時

        建立預存程序(函數、觸發器等)時,無論預存程序(函數、觸發器等)的執行語句內容部分有多少行,都必須以begin開始,end結束,並且在end後面不加預存程序(函數、觸發器等)名。

        樣本1(基於Sybase資料庫建立預存程序):

if exists (select 1 from sysobjects where name = 'pr_example’)

begin

    drop procedure pr_example

end

go

 

create procedure pr_example

    @name      varchar(30),         -- 姓名

    @age        int                -- 年齡

as

declare @begintime          varchar(20),  -- 開始時間

      @endtime            varchar(20)  -- 結束時間

begin

    [執行語句部分]

end

go

 

print 'create procedure pr_example ok'

go

 

        樣本2(基於Oracle資料庫建立預存程序):

create or replace procedure pr_example

(

    v_name         in  varchar2,    -- 姓名

    v_age          out  int         -- 年齡

)

as

    begintime     varchar2(20);      -- 開始時間

    endtime      varchar2(20);      -- 結束時間

begin

    [執行語句部分]

end;

/

prompt 'create procedure pr_example ok';

 

        此外,建立預存程序(函數、觸發器等)時,每個參數都必須單獨位於一行,不允許換行或一行多個參數。該參數的注釋要麼和該參數位於同一行,要麼單獨佔一行,不允許在參數行上換行。如下的代碼是不規範的:

        樣本3(基於Oracle資料庫建立預存程序):

create or replace procedure pr_example

(

    v_name

in  varchar2,    -- 姓名

    v_age          out  int

-- 年齡

)

as

    begintime     varchar2(20);      -- 開始時間

    -- 結束時間

    endtime     

varchar2(20);

begin

    [執行語句部分]

end;

/

prompt 'create procedure pr_example ok';

 

        在實際的軟體項目中,恰當地使用begin與end,可使得代碼的邏輯清晰、可讀性強。這有利於工作效率的提高。

 

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,號:245924426,歡迎關注!)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.