我在ms sql server 2016中创建了一个存储过程,如下所示
create proc add_route
(@from varchar(45),
@to varchar(45),
@cost decimal,
@res int out)
as
begin
if(not exists(select Route_id from Route_Master where From_location=@from and To_location=@to))
begin
insert into Route_Master(From_location,To_location,Cost) values(@from,@to,@cost);
set @res=1;
return @res
end
end
我使用以下代码使用c#来接收存储过程返回的输出。
public int addnewroute(string from, string to, decimal cost)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
SqlCommand cd = new SqlCommand("add_route", con);
cd.CommandType = System.Data.CommandType.StoredProcedure;
cd.Parameters.AddWithValue("@from ",from);
cd.Parameters.AddWithValue("@to",to);
cd.Parameters.AddWithValue("@cost",cost);
cd.Parameters.Add(new SqlParameter("@res", SqlDbType.Int));
cd.Parameters["@res"].Direction= ParameterDirection.Output;
cd.ExecuteNonQuery();
return (int)cd.Parameters["@res"].Value;
}
}
但是我得到的错误是":过程或函数add_route指定的参数太多"。但是我将相同数量的参数传递给存储过程。如何清除此错误?