還是以上面提到的存儲過程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("不能刪除");
那就是差別。
任何需求的修改,最好只要改一處代碼;另外一種情況是,需求的修改會導致到處修改代碼。他們的差別在代碼不多的情況下,也許差別不大,但是想象我們的代碼工程是很大的。像這樣的存儲過程代碼是非常基礎的,代碼是很多地方都要調用的,如果因爲缺乏封裝,導致到處修改代碼是非常的不值得的。