我正在用C#編寫一個程序,它使用傳遞給sp_executesql的參數運行一些select語句。我在測試時遇到的一個問題是,無論是從SQL Profiler還是從Visual Studio中的監視中獲取執行的命令,都會在語句結尾指定參數的值,而不是顯式指定 - 在查詢中。出於測試目的,我希望能夠快速地將參數值替換爲參數。顯式替換sp_executesql語句中的參數的快速方法?
因此,而不是:
exec sp_executesql N'
SELECT CustomerName
FROM CustomerTable ct WITH(NOLOCK)
WHERE ct.CustomerId <> @CustomerId
AND ct.ItemId <> @ItemId
AND ct.TransactionId = @TransactionId'
,N'@CustomerId bigint,@ItemId nvarchar(1),@TransactionId nvarchar(30), @CustomerId = 3000, @ItemId = N'4', @TransactionId=N'43281'
我想:
exec sp_executesql N'
SELECT CustomerName
FROM CustomerTable ct WITH(NOLOCK)
WHERE ct.CustomerId = 3000
AND ct.ItemId <> N'4'
AND ct.TransactionId = N'43281''
請不要過多關注到的例子的語法,因爲它只是被用來演示概念。有沒有人知道一個快速的方法來做到這一點?基本上,我希望將其替換爲測試目的,因爲它會使我更容易修改條件來測試它們如何影響返回的結果。我希望任何人都可以提供幫助。謝謝。
您可以手動遍歷參數列表並將其值粘貼到查詢中。否則,參數是在SQL引擎級別處理的優化,無法獲取SQL用於處理的內部查詢。你能提供你用來生成動態sql命令的C#代碼嗎? – mellamokb 2012-03-27 18:18:28