从SqlCommand获取输出参数返回null

时间:2015-02-19 14:13:57

标签: c# sql sql-server-2008

我有这段代码:

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中尝试过该查询,它返回的值很好。

我检查了ExecureNonQuery的返回值,并且按预期返回1。我完全迷失在这里。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

output语句中使用update等同于选择,而在您发布的代码中,您希望它在名为的输出参数中出现@id。

@id来自哪里?你还没有在任何地方定义它。

您使用它的方法中的

output将返回行集,而不是标量值。