c#应用程序传递奇怪的SQL参数值

本文关键字:SQL 参数 应用程序 | 更新日期: 2023-09-27 18:05:33

我正在开发一个用c# (VS2013)编写的应用程序。它调用SQL Server中的存储过程。它传递了一堆输入参数,加上四个输出参数。

我的问题是其中一个输出参数传递了一个我没有设置的值。

这是SQL Server Profiler记录为过程调用的内容。我用通用名替换了实际的参数名,只是为了问这个问题。

declare @p51 int
set @p51 = 300000
declare @p52 int
set @p52 = NULL
declare @p53 int
set @p53 = 7776
declare @p54 int
set @p54 = NULL
exec [dbo].[proc_name] (input param list is here)
     @outparam1 = @p51 output, @outparam2 = @p52 output,
     @outparam3 = @p53 output, @outparam4 = @p54 output

@outparam3/@p53是问题所在。它不应该有值。它是用一个空值创建的,如下所示(尽管作为输出参数是不必要的):

var spParam3 = new SqlParameter("@outparam3", SqlDbType.Int);
spParam3.Value = DBNull.Value;

这行代码与存储过程执行之间没有任何关系,只是为参数设置了不同的值。我在ExecuteNonQuery()调用上设置了一个断点,检查了参数列表,该参数仍然为空。

我完全不明白为什么它的值被设置为7776。是的,这个数字是整个应用程序使用的代码,但我不知道如何或为什么这个参数被设置为那个值。

如果你能想到这是怎么回事,我将不胜感激。

c#应用程序传递奇怪的SQL参数值

@outparam3=@p53

@p53 = 7776

这就是为什么你在表中得到/插入的值是7776