天天看點

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

第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,可使得代碼的邏輯清晰、可讀性強。這有利于工作效率的提高。      

繼續閱讀