C# 如何解决过程或函数add_路由中指定的参数过多错误?
我在ms sql server 2016中创建了一个存储过程,如下所示C# 如何解决过程或函数add_路由中指定的参数过多错误?,c#,sql-server,stored-procedures,C#,Sql Server,Stored Procedures,我在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))
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指定的参数太多。但我要向存储过程传递相同数量的参数。如何清除此错误?稍微绕道。您已将@cost定义为十进制,但未指定小数位数或精度。你知道默认值是什么吗?您应该始终指定刻度和精度。不要从存储过程返回@res。稍微绕道。您已将@cost定义为十进制,但未指定小数位数或精度。你知道默认值是什么吗?您应该始终指定刻度和精度。不要从存储过程返回@res。