其他在sproc中複製查詢的其他方法,有沒有什麼方法可以根據sproc參數指定提示?例如,使用參數@waitForLock
,如果它設置爲0,我想使用READPAST
提示,否則等待/阻止,直到其他事務完成。sproc中的條件提示
0
A
回答
0
一般來說,我喜歡OPTION RECOMPILE
建議,儘管這意味着每次都會重新編譯,即使統計信息或參數沒有改變。這通常是爲了阻止參數嗅探,而不是幫助您想避免或避免採取鎖定的情況。
一個想法是使用動態SQL(根據「針對臨時工作負載進行優化」設置以及您使用一個參數或其他參數運行的頻率,這也可能是有益的)。
CREATE PROCEDURE dbo.whatever
@waitForLock BIT = 1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(MAX);
SET @sql = 'SELECT something FROM dbo.somewhere';
IF @waitForLock = 0
SET @sql = @sql + ' WITH (READPAST)';
SET @sql = ' WHERE <some condition> ...';
EXEC sp_executesql @sql;
END
GO
+0
的確,我沒有想過動態SQL,但那會工作。我最終意識到在我的具體實現中,等待另一個事務(不執行'READPAST')確實沒有幫助。第一個交易會更新列值,這意味着我無法得到結果,所以我不妨儘早退出。唯一的例外是如果第一個事務回滾,這隻會發生在錯誤,並且不太可能。 –
相關問題
- 1. Primefaces條件提示
- 2. 如何在sproc中添加詳細的if條件?
- 3. Javascript:提示和條件
- 4. Highstock提出條件工具提示
- 5. AngularJS:有條件的提示觸發
- 6. 從Sproc中執行SProc(使用傳入的參數)
- 7. 進度條提示
- 8. PowerBI - 條件格式化提示
- 9. grunt-init模板條件提示
- 10. 如何提示,直到條件滿足?
- 11. 有條件地提示可選參數
- 12. dbo.sp_send_dbmail和HTML當一個電子郵件SPROC調用現有的SPROC
- 13. 如何提示用戶接受更新的條款和條件?
- 14. CLR Sproc權限
- 15. 執行SPROC
- 16. SPROC掛在SQL Server 2005中
- 17. gdb中的條件顯示
- 18. CSS中的顯示條件
- 19. Bootstrapper軟件包在前提條件菜單中未顯示
- 20. 在配置文件提示中使用條件拆分路徑
- 21. 請提供休眠條件中的If語句示例
- 22. 工具提示中的Javascript,如果其他條件
- 23. 有條件地顯示/隱藏Highcharter的工具提示
- 24. 子sProc無法引用在父sProc中創建的本地臨時表
- 25. Perforce提交/提交條件
- 26. 我如何使條件提示,將繼續提示,直到條件得到滿足
- 27. Python tkinter條目提示
- 28. EXEC sproc COALESCE(value1,value2)
- 29. 從Powershell執行sproc
- 30. MS EF 4和SPROC
我還沒有見過這樣的事情。我希望你需要一個帶有2個查詢的IF/ELSE(一個帶鎖,一個沒有) – Joe
@Joe:是的,我想到了2個查詢,因爲明顯的'CASE'聲明不起作用。如果這是另一種提示(例如'NOLOCK'),也許你可以做一個條件隔離級別:'IF @nolock = 1 SET TRANSACTION ISOLATION READ UNCOMMITTED ELSE SET TRANSACTION ISOLATION READ COMMITTED' ...然後做你的查詢。 –