sp_executesqlに渡されたパラメーターを使用していくつかのselectステートメントを実行するプログラムをC#で作成しています。テスト中に遭遇する問題の1つは、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''
例の構文は概念を示すために使用されているだけなので、あまり注意を払わないでください。誰かがこれを行うための速い方法を知っていますか?基本的には、条件を変更して、返される結果にどのように影響するかをテストするのが簡単になるため、テスト目的で置き換えてもらいたいと思います。どなたでもお役に立てれば幸いです。ありがとう。