1
我已經閱讀了大量有關參數嗅探存儲過程和解決方法的文章(特別是在這裏)。例如,這裏:http://elegantcode.com/2008/05/17/sql-parameter-sniffing-and-what-to-do-about-it/參數嗅探和嵌套存儲過程
這是否也適用於由另一個存儲過程調用的存儲過程?即鏈接文章中描述的解決方案是否也適用於嵌套存儲過程。
此外,如果您在調用存儲過程中聲明一個名爲@PersonID的變量,是否可以在被調用的存儲過程中Decalre稱爲@PersonID的變量,即DECLARE PersonID int。這將是可變的陰影。
謝謝。因此,如果我在存儲過程2中存儲過程1和PersonID = 2中聲明瞭PersonID = 1,那麼在控制從存儲過程2傳回存儲過程1後,是否可以確認PersonID等於1?是否存在使用相同變量的風險名稱? – w0051977 2012-01-31 13:35:40
是的,PersonID = 1將保留在proc 1中。proc 2的內部沒有任何影響。想想你的.net或java方法和「封裝」。沒有風險,如果它是有道理的。你的嵌套過程是一種方法,可以單獨調用 – gbn 2012-01-31 13:39:51
謝謝。我幾乎準備好回答這個問題。我在顯式事務中使用'XACT_ABORT ON'來確保事務在存儲過程出錯時回滾。因此,如果VB6命令對象(這將調用存儲過程)存在超時,或者存儲過程引發異常;該計劃將處理它。我最近才發現:'XACT_ABORT ON'。從VB6程序調用存儲過程時還有什麼我應該考慮的嗎? – w0051977 2012-02-01 13:43:46