如何解决ExecuteScalarAsync() 不返回从存储过程返回的相同值
我有一个返回正整数或 -1 的存储过程。 我有这段代码调用该存储过程,但我不知道为什么它无法捕获从存储过程返回的值
system("pdftk test1.pdf stamp stamp.pdf output test1S.pdf")
存储过程
sqlConnection sqlConn = GetNewsqlConnection();
await sqlConn.OpenAsync();
try
{
var ret = await sqlConn.ExecuteScalarasync<int>(
"dbo.Usp_Comment_Update",new
{
CommentID_in = model.CommentID,Comment_in = model.Comment,CommentTypeID_in = model.CommentTypeID,SortIndex_in = model.sortIndex,UpdatedBy_in = model.UpdatedBy
},commandType: CommandType.StoredProcedure);
return (int)ret;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sqlConn.State != ConnectionState.Closed)
{
sqlConn.Close();
}
sqlConn.dispose();
}
上面的代码总是返回 0。我读过这里的一篇文章,建议看看返回数据类型是什么。所以我在 ExecuteScalarasync 之后删除并在 Watch 窗口中查找变量 ret ,它是一个空对象。连接字符串是正确的,并且在调用后连接到正确的数据库,数据按预期更新。我什至试图删除存储过程中除 RETURN -1 之外的所有内容,但我仍然从 ExecuteScalarasync 中得到 0。
我在这里做错了什么?
解决方法
在您的存储过程中删除此 SET NOCOUNT ON
以获得正确的 @@ROWCOUNT
值。
有关详细信息,请查看此SET NOCOUNT (Transact-SQL)
不要使用RETURN -1
,而是使用SELECT -1
。标量值是一个类似表格的结果,带有单个值(1 行 1 列)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。