我正在发送ID作为输出参数,但它给出错误

System.Data.SqlClient.SqlException:过程或函数 "usp_ClientHistoryItem"需要参数"@ID",但实际不是 供应的.

密码

 using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn))
 {
      SqlParameter parameterID = new SqlParameter("@ID", oReservation.Id);
      parameterID.Direction = ParameterDirection.Output;
      cmd.Parameters.Add(parameterID); 

      cmd.Parameters.Add(new SqlParameter("@PhoneNo", oReservation.ClientPhone));
      cmd.Parameters.Add(new SqlParameter("@UserId", oReservation.UserID));
      cmd.Parameters.Add(new SqlParameter("@Description", oReservation.Description));
      cmd.Parameters.Add(new SqlParameter("@TestId", oReservation.TestId));
      cmd.Parameters.Add(new SqlParameter("@StartDate", oReservation.StartDate));

      cmd.ExecuteNonQuery();

      returnValue = Convert.ToInt32(cmd.Parameters["@ID"].Value);

      return returnValue;
}

推荐答案

您似乎正在调用一个存储过程-但是您从来没有将您的SqlCommand设置为一个存储过程:

using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;  // add this line to tell ADO.NET it's a stored procedure!!

如果你忘了那句话,那就go 吧.NET将try 将您的内容解释为特殊的SQL语句....

Database相关问答推荐

在GridDB中使用存储过程失败

撤销语句释放类实例中可用的缓冲区

Rust 全局存储数据库连接

有使用 H2 数据库的实际经验吗?

PostgreSQL WHERE IN LIKE 查询

在 PostgreSQL 的数组列中查找字符串

如何打印出 sequelize 实例的表名?

只用一个 save() 插入多行

ORM 性能成本

两个不同数据库中的两个表之间的连接有什么问题?

什么是 Scalar标量查询?

SQL-Server:还原数据库时,SQL 命令行中的 NOUNLOAD 和 STATS 是什么意思?

不同的数据库是否使用不同的名称引用?

使用varchar作为主键?

如何使用 INSERT ... ON CONFLICT ... 更新所有列?

为什么在 Hibernate 中不推荐hibernate.connection.autocommit = true?

如何删除除了postgres中的少数数据库之外的所有数据库

设计数据库来保存不同的元数据信息

防止 PostgreSQL 有时 Select 错误的查询计划

在 Django 中,如何从数据库中 Select 100 条随机记录?