次のストアドプロシージャがあります
CREATE PROCEDURE [dbo].[usp_GetData]
@foo VARCHAR (20), @bar bit = 1
AS ...
これにより、SSMS で呼び出されたときに正しい結果が得られます。
EXEC dbo.usp_GetData @foo = 'Hellow World', @bar = 0
以下のようにC#アプリケーション内で呼び出す場合
cmd.Parameters.Add(new SqlParameter("@foo", foo));
cmd.Parameters.Add(new SqlParameter("@bar", 0));
& は、以下のようにプロファイラーによってキャプチャされます。
exec dbo.usp_GetData @foo=N'Hello World',@bar=default
デフォルトをオーバーライドするパラメーターは別の方法で渡す必要がありますか?