从 SqlCommand 获取输出参数 returns null

Getting output parameter from SqlCommand returns null

我有这段代码:

using (SqlCommand cmd = new SqlCommand())
{
   cmd.Connection = connection;
   cmd.CommandText = "UPDATE S " +
                     "SET S.WebId = S.WebId + 1 " +
                     "OUTPUT DELETED.WebId " +
                     "FROM jcdSetting S";
   SqlParameter parameter = cmd.Parameters.Add("@id", SqlDbType.Int);
   parameter.Direction = ParameterDirection.Output;
   int i = cmd.ExecuteNonQuery();
   webId = Convert.ToInt32(cmd.Parameters["@id"].Value);
}

由于某种原因,最后一行失败了,我尝试访问的参数始终是 DbNull。我已经在 Management Studio 中尝试了查询,它 return 的值很好。

我已经检查了 ExecureNonQuery 的 return 值,而且 returns 1 也符合预期。我完全迷失在这里。

如有任何帮助,我们将不胜感激。

update 语句中使用 output 等同于 select,而从您发布的代码来看,您期望它出现在输出中名为@id.

的参数

@id从何而来?你没有在任何地方定义它。

output 在您使用的方法中它会 return 一个行集,而不是一个标量值。