Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解决过程或函数add_路由中指定的参数过多错误?_C#_Sql Server_Stored Procedures - Fatal编程技术网

C# 如何解决过程或函数add_路由中指定的参数过多错误?

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))

我在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指定的参数太多。但我要向存储过程传递相同数量的参数。如何清除此错误?

稍微绕道。您已将@cost定义为十进制,但未指定小数位数或精度。你知道默认值是什么吗?您应该始终指定刻度和精度。不要从存储过程返回@res。稍微绕道。您已将@cost定义为十进制,但未指定小数位数或精度。你知道默认值是什么吗?您应该始终指定刻度和精度。不要从存储过程返回@res。