2010-08-13 26 views
3

如果我們需要一些只能通過動態查詢才能實現的信息,那麼不應該直接在應用程序代碼中(在DAL中)而不是在存儲過程中寫入信息?在存儲過程中編寫動態查詢有什麼意義

因爲如果我們在其中使用動態查詢(這是已保存的執行執行計劃),我們從SP獲得的好處已經丟失。

+0

我覺得有一件事是代碼更好的可維護性。 – 2010-08-13 10:36:05

回答

2

還有很多其他的facets of stored procedures除了他們的執行計劃緩存功能以外,所以我不認爲公平的解僱他們的使用僅僅是因爲他們將包含一個即席查詢。

(另外值得一提的是,動態SQL的正確形成位no barrier到執行計劃重用)

+0

不要忘記安全性(在「存儲過程的方面」中沒有提及。權限對於存儲過程非常容易處理,應用程序開發人員可能無法訪問SP源代碼。 – 2010-08-13 10:59:20

2

如果您的應用程序目前只預存話費程序,然後保持一致,並調用存儲過程並執行動態SQL在那裏。

如果您的應用程序已經充滿了生成的SQL語句,那麼只需在那裏構建動態SQL。

請記住,使用存儲過程動態生成SQL不會保護您免受注入攻擊。但是,該程序的參數類型和大小限制可以幫助減少注射暴露。

相關問題