1. 程式人生 > >為什麼要使用儲存過程?

為什麼要使用儲存過程?

       幾個去 IBM 面試的兄弟回來抱怨:去了好幾個不同的 IBM 專案組,幾乎每個面試官問到資料庫的時候都要問用沒用過儲存過程,煩人不?大家去面的程式設計師,又不是 筆者認為,儲存過程說白了就是一堆 SQL 的合併。中間加了點邏輯控制。 但是儲存過程處理比較複雜的業務時比較實用。 比如說,一個複雜的資料操作。如果你在前臺處理的話。可能會涉及到多次資料庫連線。但如果你用儲存過程的話。就只有一次。從響應時間上來說有優勢。 也就是說儲存過程可以給我們帶來執行效率提高的好處。 另外,程式容易出現 BUG 資料量小的,或者和錢沒關係的專案不用儲存過程也可以正常運作。mysql 的儲存過程還有待實際測試。如果是正式專案,建議你用 sql server 或 oracle 的儲存過程。資料與資料之間打交道的話,過程會比程式來的快的多。面試官問有沒有用儲存,實際上就是想知道前來面試的程式設計師到底做過資料量大的專案沒。如 果是培訓出來的,或者小專案小公司出來的,對儲存肯定接觸的少了。 所以,要想進大公司,沒有豐富儲存過程經驗,是不行的。 錯。儲存過程不僅僅適用於大型專案,對於中小型專案,使用儲存過程也是非常有必要的。其威力和優勢主要體現在: 1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。 2.當對資料庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。這些操作,如果用程式來完成,就變成了一條條的 SQL 語句,可能要多次連線資料庫。而換成儲存,只需要連線一次資料庫就可以了。 3.儲存過程可以重複使用,可減少資料庫開發人員的工作量。 4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權。 儲存過程的缺點 1:除錯麻煩,但是用 PL/SQL Developer 除錯很方便!彌補這個缺點。    2:移植問題,資料庫端程式碼當然是與資料庫相關的。但是如果是做工程型專案,基本不存在移植問題。    3:重新編譯問題,因為後端程式碼是執行前編譯的,如果帶有引用關係的物件發生改變時,受影響的儲存過程、包將需要重新編譯(不過也可以設定成執行時刻自動編譯)。   4:如果在一個程式系統中大量的使用儲存過程,到程式交付使用的時候隨著使用者需求的增加會導致資料結構的變化,接著就是系統的相關問題了,最後如果使用者想維護該系統可以說是很難很難、而且代價是空前的。維護起來更加麻煩!