1. 程式人生 > >什麼是儲存過程?用什麼來呼叫?

什麼是儲存過程?用什麼來呼叫?

答:儲存過程是一個預編譯的SQL語句,比如一些場景的sql比較複雜,並且需要經常使用或者多次使用的。儲存過程的優點是說只需建立一次編譯一次,以後在該程式中就可以多次直接呼叫。如果一個sql是經常需要操作的,並且邏輯不容易改變,使用儲存過程比單純SQL語句執行要快,因為sql每次查詢而且都需要編譯。而且網路開銷也大,儲存過程只需要傳一個名字,在資料庫呼叫就行了,而且這樣程式可移植高。

 

優勢:

1、提高效能
SQL語句在建立過程時進行分析和編譯。 儲存過程是預編譯的,在首次執行一個儲存過程時,查詢優化器對其進行分析、優化,並給出最終被存在系統表中的儲存計劃,這樣,在執行過程時便可節省此開銷。
2、降低網路開銷
儲存過程呼叫時只需用提供儲存過程名和必要的引數資訊,從而可降低網路的流量。
3、便於進行程式碼移植
資料庫專業人員可以隨時對儲存過程進行修改,但對應用程式原始碼卻毫無影響,從而極大的提高了程式的可移植性。
4、更強的安全性
1)系統管理員可以對執行的某一個儲存過程進行許可權限制,避免非授權使用者對資料的訪問
2)在通過網路呼叫過程時,只有對執行過程的呼叫是可見的。 因此,惡意使用者無法看到表和資料庫物件名稱、嵌入自己的 Transact-SQL 語句或搜尋關鍵資料。
3)使用過程引數有助於避免 SQL 注入攻擊。 因為引數輸入被視作文字值而非可執行程式碼,所以,攻擊者將命令插入過程內的 Transact-SQL 語句並損害安全性將更為困難。
4)可以對過程進行加密,這有助於對原始碼進行模糊處理。 

劣勢:

1、儲存過程需要專門的資料庫開發人員進行維護,但實際情況是,往往由程式開發員人員兼職

2、設計邏輯變更,修改儲存過程沒有SQL靈活

 

 

 

應該是可以用一個命令物件來呼叫儲存過程。