我正在用 C# 编写一个程序,该程序使用传递给 sp_executesql 的参数运行一些选择语句。我在测试时遇到的一个问题是,无论我是从 SQL Profiler 还是从 Visual Studio 中的手表执行的命令,参数的值都是在语句末尾指定的,而不是在-查询中的行。出于测试目的,我想要一种将参数值替换为参数的快速方法。
所以,而不是:
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''
请不要过多关注示例的语法,因为它只是用于演示概念。有谁知道一个快速的方法来做到这一点?基本上,我希望将其替换为测试目的,因为这将使我更容易修改条件以测试它们如何影响返回的结果。我将不胜感激任何人都可以提供的帮助。谢谢。