Best practise : 封裝存儲過程 (續)


 

還是以上面提到的存儲過程delete_dept爲例。delete_dept實在是太過粗糙,缺乏基本的錯誤檢查。現在用戶需要在刪除前給它加入一個檢查,和現實的代碼更接近一些。

檢查爲:“如果dept內有對應的person,那麼提示用戶不能刪除”,代碼如下:

 

CREATE PROCEDURE [dbo].[delete_dept]        

  @id int

AS

    if exists (select * from person where dept_id = @id)

  return -1

delete  from dept where id=@id

RETURN 0

恩。是的,變化發生了。那麼這個變化到底對我們的代碼會有多大的影響呢?

在這樣的情況下,如果採用LocalFunction方法,那麼我只要修改下函數void delete_dept(int id)就行。

 

void delete_dept(int id)

{

  int r = RunProc("delete_dept",id); 

If(r==-1)MessageBox.Show("不能刪除");

}

如果是採用RunProc方法,那麼所有調用的地方都要加入這個用戶提示代碼:

      If(r==-1)MessageBox.Show("不能刪除");

那就是差別。

任何需求的修改,最好只要改一處代碼;另外一種情況是,需求的修改會導致到處修改代碼。他們的差別在代碼不多的情況下,也許差別不大,但是想象我們的代碼工程是很大的。像這樣的存儲過程代碼是非常基礎的,代碼是很多地方都要調用的,如果因爲缺乏封裝,導致到處修改代碼是非常的不值得的。

發佈了4 篇原創文章 · 獲贊 0 · 訪問量 2308
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章