过程或函数需要未提供的参数 - 但提供参数WAS

时间:2015-03-13 17:08:35

标签: asp.net-mvc-4 c#-4.0 stored-procedures sql-server-2012

我有一个看似常见的问题,但没有任何明显的错误。

我已经看过所有相关的主题,我看不出与我的问题有任何相似之处,因为我没有做任何"显而易见的"错误,至少与其他人不相似。

我的存储过程声明:

CREATE PROCEDURE [dbo].[sp_AddEventTemp]
    @iUserID int,
    @iVerb int,
    @iObject int,
    @iResult int,
    @nTransactionID numeric Output

代码:

var userId = 9530;
var verb = 2;
var objectId = 15;
var transactionId = 0;

using (var connection = new SqlConnection(ConnectionString()))
{
    var command = new SqlCommand('sp_AddEventTemp', connection)
    {
        CommandType = CommandType.StoredProcedure
    };

    command.Parameters.Add(new SqlParameter("@iUserID", userId)
    {
        Direction = ParameterDirection.Input,
        SqlDbType = SqlDbType.Int
    });
    command.Parameters.Add(new SqlParameter("@iVerb", verb)
    {
        Direction = ParameterDirection.Input,
        SqlDbType = SqlDbType.Int
    });
    command.Parameters.Add(new SqlParameter("@iObject", objectId)
    {
        Direction = ParameterDirection.Input,
        SqlDbType = SqlDbType.Int
    });
    command.Parameters.Add(new SqlParameter("@iResult", 0)
    {
        Direction = ParameterDirection.Input,
        SqlDbType = SqlDbType.Int
    });
    command.Parameters.Add(new SqlParameter("@nTransactionID", 0)
    {
        Direction = ParameterDirection.Output,
        SqlDbType = SqlDbType.Int
    });

    // execute  
    connection.Open();

    transactionId = (int)command.ExecuteScalar();

    connection.Close();
}

return transactionId;

我得到了:

Procedure or function 'sp_AddEventTemp' expects parameter '@iResult' which was not supplied

即使它显然是供应的!

我直接在SQL服务器上运行此测试:

sp_AddEventTemp 9530, 2, 15, 0, 0

它完美无缺。我得到了:(1 row(s) affected)

因此存储过程本身没有任何问题。代码中必定有一些内容,我无法弄明白,因为它对我来说是正确的。

我对其他类似的存储过程也这样做,它们都运行良好。

有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

由于@nTransactionID的过程数据类型与您在代码(numeric / int)中使用它的不匹配,是否会出现某种后续错误?