【发布时间】:2011-03-24 10:19:51
【问题描述】:
所以我正在连接一个 sql 数据库。 我有一个 asp.net 页面,当用户选择状态的下拉列表并选择关闭的值,然后单击更新票证按钮,我需要它来更新表中的 Closed_date 列。
我的表有 Closed_Date 类型的日期时间列。 我有一个存储过程,它根据票号更新该列。
这是我遇到麻烦的地方:
con = new SqlConnection(_strConStr);
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "iz_sp_updateticket";
cmd.Parameters.Add(new SqlParameter("@Priority", SqlDbType.Int)).Value = ddlPriority.SelectedValue;
cmd.Parameters.Add(new SqlParameter("@Status", SqlDbType.VarChar, 50)).Value = ddlStatus.SelectedValue;
cmd.Parameters.Add(new SqlParameter("@Environment", SqlDbType.VarChar, 50)).Value = ddlEnv.SelectedValue;
cmd.Parameters.Add(new SqlParameter("@Info", SqlDbType.VarChar)).Value = txtMessage.Text;
cmd.Parameters.Add(new SqlParameter("@Ticket", SqlDbType.Int)).Value = txtTicket.Text;
if (ddlStatus.SelectedValue == "Closed")
{
cmd.Parameters.Add(new SqlParameter("@Status", SqlDbType.VarChar, 50)).Value = ddlStatus.SelectedValue;
cmd.Parameters.Add(new SqlParameter("@Closed_Date", SqlDbType.DateTime)).Value = System.DateTime.Now;
}
else
{
cmd.Parameters.Add(new SqlParameter("@Status", SqlDbType.VarChar, 50)).Value = ddlStatus.SelectedValue;
cmd.Parameters.Add(new SqlParameter("@Closed_Date", SqlDbType.DateTime)).Value = DBNull.Value;
}
con.Open();
cmd.ExecuteNonQuery();
这是我的存储过程:
CREATE procedure [dbo].[iz_sp_updateticket]
@Ticket int,
@Priority varchar(50),
@Status varchar(50),
@Environment varchar(50),
@Info varchar(max),
@Closed_date datetime
as
UPDATE stotickets
SET
Priority = @Priority,
[Status] = @Status,
Environment = @Environment,
Info = @Info,
Closed_date = @Closed_date
WHERE Ticket = @Ticket
错误
Procedure or function iz_sp_updateticket has too many arguments specified.
【问题讨论】:
-
您的问题究竟是什么?我猜你的存储过程可能需要更新以检查 @Closed_Date 是否为空,如果是则不更新它?还是?
-
我想通了。我删除了第一次状态更新,它现在可以工作了