麻烦帮我看下 这样调用存储过程对不??
SqlCommand cmd = new SqlCommand("po_queryprice", conn);
                     cmd.CommandType = CommandType.StoredProcedure;
                     cmd.Parameters.Add("@ccinvcode", SqlDbType.VarChar);
                     cmd.Parameters.Add("@ccvencode", SqlDbType.VarChar);
                     cmd.Parameters["@ccinvcode"].Value = dt.Tables[0].Rows[i][0].ToString();
                     cmd.Parameters["@ccvencode"].Value = dt.Tables[0].Rows[i][1].ToString();
                     SqlDataAdapter sqldap = new SqlDataAdapter(cmd);
                     DataSet ddt = new DataSet();
                     sqldap.Fill(ddt);
------解决方案--------------------
你调用存储过程的代码应该没有什么问题,但是整个逻辑太乱了,不知道你的目的是什么。注意到
cmd.Parameters["@ccinvcode"].Value = dt.Tables[0].Rows[i][0].ToString();
这一句里面有个循环变量i,dt的含义应该是一个数据集。你要遍历数据集中某个datatable的所有行,然后作为存储过程的参数,并执行多次的fill操作,很难理解是什么目的?
因为你每循环一次,就重新new一个ddt ,循环后ddt里面肯定不是你想要的东西
------解决方案--------------------
create proc po_queryprice
@ccinvcode varchar(32),
@ccvencode varchar(32)
as
  select MaxPrice=max(price),TotalAmount=sum(amount)
  from orders
  where ccinvcode=@ccinvcode and ccvencode=@ccvencode
go