我有一个看似常见的问题,但没有任何明显的错误。
我已经看过所有相关的主题,我看不出与我的问题有任何相似之处,因为我没有做任何"显而易见的"错误,至少与其他人不相似。
我的存储过程声明:
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)
因此存储过程本身没有任何问题。代码中必定有一些内容,我无法弄明白,因为它对我来说是正确的。
我对其他类似的存储过程也这样做,它们都运行良好。
有什么想法吗?
提前致谢
答案 0 :(得分:0)
由于@nTransactionID的过程数据类型与您在代码(numeric / int)中使用它的不匹配,是否会出现某种后续错误?