2017-10-05 127 views
1

我有一個帶有int輸出參數的存儲過程。如果我運行SQL Server事件探查器,通過一些Net代碼執行存儲過程,並捕獲RPC:完成事件,文本數據是這樣的:在sql profiler中執行存儲過程

declare @p1 int 
set @p1=13 
exec spStoredProcedure @[email protected] output 
select @p1 

爲什麼它看起來像它得到的值輸出參數在執行存儲過程之前?

我發現了一個答案,它是RPC:completed事件類。所以它當時已經知道結果了。但我無法理解爲什麼exec語句在RPC:completed事件完成之後。

回答

1

您在Profiler(或擴展事件)跟蹤中看到的RPC已完成TextData只是RPC請求的呈現,而不是由SQL Server執行的實際語句。這便於將文本複製/粘貼到SSMS窗口中,以便作爲SQL批處理臨時執行。

由於RPC完成後實際輸出值已知,因此跟蹤文本使用實際值初始化參數變量。它可能會更清晰,它在執行前被初始化爲NULL。