【问题标题】:stored procedure expects parameter which was not supplied存储过程需要未提供的参数
【发布时间】:2009-12-18 16:13:48
【问题描述】:

我从 C# .net 调用存储过程,其中一个字符串参数为空。在这种情况下,我通过 DBNull.Value。但是,我收到上述错误。有什么想法吗?

【问题讨论】:

  • 尝试执行您的 sp,使用您通过 exec 命令使用 ssms 传递的参数。

标签: asp.net sql-server-2005 stored-procedures


【解决方案1】:

如果字符串为空,您将看到此错误。为避免这种情况,您可以在存储过程中设置默认参数值,或者如果您的字符串为空,则可以传递DBNull.Value

【讨论】:

    【解决方案2】:

    如果参数的值为“null”(与 DBNull.Value 相对),您会得到此信息。

    你确定参数值是DBNull.Value吗?

    【讨论】:

      【解决方案3】:

      您有权访问存储过程吗?如果是这样,(并且如果存储过程逻辑允许),修改输入参数的声明以添加“= Null”结束,如

       Create procedure ProcName 
       @MyParameterName Integer = Null,
        -- con't 
      
       As... 
      

      【讨论】:

        【解决方案4】:

        您能否提供更多详细信息,例如您如何调用存储过程、参数本身和值。你知道在你的存储过程中你可以为变量设置默认值。

        大意是:

        ALTER SprocMySproc
         @myvar varchar(50)=NULL
        
        SELECT blah FROM MyTable WHERE MyField=@myvar OR @myvar IS NULL
        

        如果参数为 null 或为空,您的实际 C# 或 vb.net 代码可以忽略发送参数

        if(!(String.IsNullOrEmpty(myVar)))
         {
          //pass the parameter
          mySQLCommandObject.Parameters.Add("@myvar", sqldbtype.varchar).Value = myVar;
          //other code...
         }
        

        【讨论】:

          猜你喜欢
          • 2021-07-14
          • 2013-05-09
          • 1970-01-01
          • 1970-01-01
          • 2010-09-26
          • 2019-01-27
          • 1970-01-01
          相关资源
          最近更新 更多